小编Ane*_*R S的帖子

具有远程 jwt 身份验证的 Django REST

我将创建一个必须是远程用户的 Django REST 项目:外部服务器公开身份验证 api 并使用JWT。它也向我公开了一个不记名令牌以允许我使用 api。我的 Django 将不得不公开 api 以供客户端(移动应用程序)进行身份验证。我不太清楚如何处理身份验证流量:我是否必须构建自定义身份验证?

authentication api django jwt django-rest-framework

5
推荐指数
0
解决办法
945
查看次数

Django Rest Framework:在ViewSet中注册多个序列化器

我正在尝试创建一个自定义API(不使用模型),但是它没有在架构中显示请求定义(因此,没有大张旗鼓地显示它)。我当前的代码是:

views.py

class InfoViewSet(viewsets.ViewSet):

    @list_route(methods=['POST'])
    def some_method(self, request):
       data = JSONParser().parse(request)
       serializer = GetInfoSerializer(data=data)
       serializer.is_valid(raise_exception=True)
       info = get_data_from_elsewhere(serializer.data)
       return Response(info)
Run Code Online (Sandbox Code Playgroud)

urls.py

router.register(r'^info', InfoViewSet, base_name='info')
Run Code Online (Sandbox Code Playgroud)

serializers.py

class InfoSomeMethodSerializer(serializers.Serializer):

  list_id = serializers.ListField(child=serializers.IntegerField())
  password = serializers.CharField()
Run Code Online (Sandbox Code Playgroud)

它显得有些招摇,但只是响应部分。如何注册发布参数?我也不确定我是否正确使用了DRF(我是新手),所以任何纠正都将不胜感激。

-

编辑:我尝试了Linovia建议的serializer_class参数,但是没有用,我得到了:

TypeError:InfoViewSet()收到无效的关键字“ serializer_class”

我尝试了覆盖get_serializer_class方法,但也没有用:

def get_serializer_class(self):
    if self.action == 'some_method':
        return InfoSomeMethodSerializer
Run Code Online (Sandbox Code Playgroud)

python django django-rest-framework

5
推荐指数
1
解决办法
666
查看次数

HTML 输入中当前不支持列表

我正在为我的 API 端点使用 Django REST 通用视图。我的序列化程序中的字段之一具有 ManyToMany 关系。我想将该字段显示到我的 API 端点中,但收到此错误

HTML 输入中当前不支持列表。

我的看法是这样的:

class AlertCreateView(ListCreateAPIView):
    permission_classes = (IsAuthenticated,)
    pagination_class = None
    serializer_class = AlertSerializer

    def get_queryset(self):
        queues = Queue.objects.all()
        for queue in queues:
           queryset = Alert.objects.filter(
               queue=queue
           )

        return queryset
Run Code Online (Sandbox Code Playgroud)

我的序列化器是这样的:

class AlertSerializer(serializers.ModelSerializer):
     queue = QueueSerializer(many=True)

     class Meta:
         model = Alert
         fields = (
             'id', 'name', 'queue','email', 'expected_qos'
         )
Run Code Online (Sandbox Code Playgroud)

django html-parsing django-rest-framework

5
推荐指数
2
解决办法
8865
查看次数

Django REST框架:AttributeError:'User'对象没有属性'books'

http://127.0.0.1:8000/app_restFramework/users/,返回文字

/ app_restFramework/users /'User'对象的AttributeError没有属性'books'

models.py

class User(models.Model):
    username = models.CharField(max_length=100)

class Book(models.Model):
    name = models.CharField(max_length=100)
    author = models.CharField(max_length=100)
    publisher = models.CharField(max_length=100)
    time = models.CharField(max_length=100)
    owner = models.ManyToManyField(User)
Run Code Online (Sandbox Code Playgroud)

serializers.py

from app_restFramework.models import Book,User
class UserSerializer(serializers.ModelSerializer):
    books = serializers.PrimaryKeyRelatedField(many = True, read_only = True)

    class Meta:
        model = User
        fields = ('id', 'username', 'books')
Run Code Online (Sandbox Code Playgroud)

views.py

class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
Run Code Online (Sandbox Code Playgroud)

urls.py

url(r'^app_restFramework/users/$', app_restFramework.views.UserList.as_view() ), 
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

4
推荐指数
1
解决办法
4909
查看次数

将序列化器中的 DateTimeField 转换为仅显示日期而不显示时间

这是我的模型

class modelTest(models.Model):
    created_at = models.DateTimeField(auto_now_add=True,blank=True,null=True)
    updated_at = models.DateTimeField(auto_now=True,blank=True,null=True)
    imageA = models.ImageField(upload_to='images/', default='',null=True)
Run Code Online (Sandbox Code Playgroud)

这是相关的序列化器

class Serializer_Job_TX(serializers.ModelSerializer):
    class Meta:
        model = modelTest
        fields = [
           'created_at',
           'updated_at',
           'imageA',
       ]
Run Code Online (Sandbox Code Playgroud)

我如何确保当日期时间字段发生序列化时,它只输出日期而不输出时间?有什么建议

django-rest-framework

4
推荐指数
1
解决办法
3505
查看次数

具有自定义保存/恢复逻辑的 Django Rest 框架字段

如何使用自定义保存/恢复逻辑创建 Django Rest 框架读写字段?我正在使用 DRF 3.5.4 和 Django 1.8。

像这样的东西:

class UserSerializer(serializer.Serializer):
    # username is a field in the backing model, no problemo
    username = serializers.CharField()

    # type is not an actual model field, but reflects whether the user has 
    # Django permission "foo" set. I.e. "normal" = no permission, "silly" = 
    # permission is set.
    type = serializers.ChoiceField(["normal", "silly"])
Run Code Online (Sandbox Code Playgroud)

换句话说:创建用户时,如果type == "silly",则为他设置权限“foo”,如果类型为“正常”则不设置。并且在检索用户时,type == "silly"如果用户设置了权限“foo”,如果没有则设置“正常”。

不允许/不需要用户更新,但我也有兴趣知道如何将其应用于更新。

django-rest-framework

3
推荐指数
1
解决办法
2641
查看次数

Django Rest Framework发送验证邮件

有没有办法发送验证邮件.当用户通过drf(Django Rest框架)注册时.我在我的User模型中有这个代码:

from django.core.mail import send_mail
from config import settings

def email_user(self, subject, message, from_email=settings.DEFAULT_FROM_EMAIL, **kwargs):        
    send_mail(subject, message, from_email, [self.email], fail_silently=False, **kwargs)
Run Code Online (Sandbox Code Playgroud)

在我的settings.py:

EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_PASSWORD = '`132312123'
EMAIL_HOST_USER = 'mimic@gmail.com'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Run Code Online (Sandbox Code Playgroud)

但是电子邮件没有发送,我也想验证电子邮件服务,因此用户点击链接时会被激活.如何完成这些?

python email django rest django-rest-framework

3
推荐指数
1
解决办法
3432
查看次数

在 Django restframework 中序列化不是模型的字典

我已经阅读了一些关于序列化字典的答案和帖子。但我仍然无法让它工作。这是问题所在。我在 django app 中做了一些数据处理,它返回这个字典(它有关于测验的信息):

{101: {'subject': 'General-Intelligence', 'topics': ['Coding Decoding', 'Dice & Boxes', 'Statement & Conclusion', 'Venn Diagram', 'Mirror and Water Image', 'Paper Cutting and Folding', 'Clock/Time', 'Matrix', 'Direction', 'Blood Relation', 'Series Test', 'Ranking', 'Mathematical Operations', 'Alphabet Test', 'Odd one out', 'Analogy'], 'num_questions': 25, 'creator': 'Rajesh K Swami'}}
Run Code Online (Sandbox Code Playgroud)

我想序列化这本字典。所以我所做的就是为这本词典创建了一个类。IE。

class PsudoTests:

    def __init__(self,body):
        self.body = body
Run Code Online (Sandbox Code Playgroud)

也是一个序列化器:

class PsudoTestSerializer(serializers.Serializer):
    body = serializers.DictField()
Run Code Online (Sandbox Code Playgroud)

现在在 api 视图中:

class TestListView(generics.ListAPIView):

    def get_serializer_class(self):
        serializer = PsudoTestSerializer

    def get_queryset(self):
        me = Studs(self.request.user)
        tests = me.toTake_Tests(1) …
Run Code Online (Sandbox Code Playgroud)

django django-rest-framework

3
推荐指数
1
解决办法
3273
查看次数

“ CityListViewSet”应包含“ serializer_class”属性,或覆盖“ get_serializer_class()”方法

我假设标题中有错误,为清楚起见,这里再次

'CityListViewSet' should either include a `serializer_class` attribute, 
or override the `get_serializer_class()` method.
Run Code Online (Sandbox Code Playgroud)

我的序列化程序未连接到我的视图,在我的代码中应该如此。我不太确定这个错误在哪里。我想知道你们是否看到过类似的东西?

这是代码。

路由器:

router.register(r'city-list', CityListViewSet, base_name='city-list')
Run Code Online (Sandbox Code Playgroud)

视图:

class CityListViewSet(viewsets.ReadOnlyModelViewSet):                 
    queryset = Venue.objects.values('city').distinct()
    serializer = CitySerializer(queryset, many=True)
    ordering_fields = ('city',)
    ordering = ('city',)
Run Code Online (Sandbox Code Playgroud)

序列化器:

class CitySerializer(serializers.ModelSerializer):    
    class Meta:
        model = City
        fields =('city',)
Run Code Online (Sandbox Code Playgroud)

用似乎正确连接的代码会导致这种断言错误的原因是什么?

python assertion django-rest-framework django-rest-viewsets

2
推荐指数
1
解决办法
7073
查看次数

Rest Framework Django - 禁用字段接受空值

Rest Framework Django - 禁用字段接受空值

如何配置序列化模型以接受空白字段?

警告

{"Operacao": ["This field can not be blank."]}
Run Code Online (Sandbox Code Playgroud)

模型

class SEF(models.Model):
    operacao = models.CharField(max_length=10, null=True)
    documento = models.CharField(max_length=50, null=True)
    user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

序列化器

class SEFCreateSerializer(serializers.ModelSerializer):

    class Meta:
        model = SEF
        fields = ('operacao', 'documento', 'user')
Run Code Online (Sandbox Code Playgroud)

看法

sef_create = SEFCreateSerializer(data=data, many=True)
        if sef_create.is_valid():
            sef_create.save()
            salvo = HTTP_200_OK
        else:
            salvo = sef_create.errors
Run Code Online (Sandbox Code Playgroud)

django django-models django-rest-framework

2
推荐指数
3
解决办法
5784
查看次数

在序列化程序中获取字段的属性(Django Rest框架)

serializers.py

from django.contrib.auth.models import User
from engine.models import Game
from rest_framework import serializers

class GameSerializer(serializers.ModelSerializer):
    class Meta:
        model = Game
        fields = (
            'game_name',
            'level',
            'game_type',
            'creator',
            'id',
        )
Run Code Online (Sandbox Code Playgroud)

我想creator.usernamecreator刚刚返回用户对象,它是创作者的ID的整数。如何获取creator.username而不是creator?

django django-serializer django-rest-framework

2
推荐指数
2
解决办法
3223
查看次数

导入错误:没有名为rest_framework_mongoengine的模块

我已经使用 pip 安装了 DjangoRest 框架和 Mongo 引擎,包含rest_framework_mongoengineINSTALLED_APPS列表中。当我运行服务器时仍然抛出异常。

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/utils/autoreload.py”,第 227 行,包装器 fn(*args, **kwargs)

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/core/management/commands/runserver.py”,第 117 行,inner_run autoreload.raise_last_exception()

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/utils/autoreload.py”,第 250 行,在 raise_last_exception Six.reraise(*_exception) 中

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/utils/autoreload.py”,第 227 行,包装器 fn(*args, **kwargs)

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/ init .py”,第 27 行,在 setup apps.populate(settings.INSTALLED_APPS) 中

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/apps/registry.py”,第 85 行,填充 app_config = AppConfig.create(entry)

文件“/Users/anum/Desktop/Python/ConnectBox/env/lib/python2.7/site-packages/django/apps/config.py”,第 94 行,在 create module = import_module(entry) 中

文件“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/ init .py”,第 37 行,在 import_module import (name)中

导入错误:没有名为rest_framework_mongoengine的模块

这是我的Settings.py

使用pip list命令,列出了以下软件包:

Django (1.11.2)
djangorestframework (3.6.3)
mongoadmin (0.2)
mongodbforms (0.3)
mongoengine (0.13.0)
pip …
Run Code Online (Sandbox Code Playgroud)

python django mongoengine django-rest-framework

0
推荐指数
1
解决办法
3153
查看次数