【问题标题】:Django REST Framework got Server Error 500Django REST 框架得到服务器错误 500
【发布时间】:2020-04-22 13:28:40
【问题描述】:

我在 django-rest-framework quickstart 关注了 turial

我有两个网址,即/users//groups/

group 完美运行:


user url 出现如下错误:

服务器错误 500

我将DEBUG 设置为False,然后在settings.py 中将一些主机添加到ALLOWED_HOST

DEBUG = False

ALLOWED_HOSTS = [
    '127.0.0.1',
    'localhost'
]

INSTALLED_APPS = [
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

我的urls.py:

from django.contrib import admin
from django.urls import include, path
from rest_framework import routers
from django_rest.django_rest_app import views

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

这是我的serializers.py

from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
  class Meta:
    model = User
    fields = ['url','username','email','group']
class GroupSerializer(serializers.HyperlinkedModelSerializer):
  class Meta:
    model = Group
    fields = ['url','name']

这是我的views.py

from django.shortcuts import render
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from rest_framework import permissions
from django_rest.django_rest_app.serializers import UserSerializer, GroupSerializer

class UserViewSet(viewsets.ModelViewSet):
  """
  API endpoint that allows users to be viewed or edited.
  """
  queryset = User.objects.all().order_by('-date_joined')
  serializer_class = UserSerializer
  permission_classes = [permissions.IsAuthenticated]
class GroupViewSet(viewsets.ModelViewSet):
  """
  API endpoint that allows groups to be viewed or edited.
  """
  queryset = Group.objects.all()
  serializer_class = GroupSerializer
  permission_classes = [permissions.IsAuthenticated]



更新

当我再次将DEBUG 设置为True 时,我得到了这个:

字段名称group 对模型User 无效


我还是个初学者,希望能帮到你
谢谢。

【问题讨论】:

  • 您能否将您在日志中获得的完整回溯添加到您的问题中
  • Django User 模型没有名为 group 的字段,这可能是您的问题?
  • 当我在日志中runserver 时,所有正常的网络显示都照常出现,当我在 URL 上写 http: //127.0.0.1:8000/users/ 时,然后在我的日志中显示:[22 / Apr / 2020 12:01:32] GET / users / HTTP / 1.1 500 145。 @IainShelvington
  • 是的,以前我收到此错误The Django User model does not have a field named group,但现在已解决..
  • User 上没有“组”字段,是否要返回UserSerializer 中的组列表?

标签: python django django-rest-framework


【解决方案1】:

你在UserSerializer课堂上犯了错误

class UserSerializer(serializers.HyperlinkedModelSerializer):
  class Meta:
    model = User
    fields = ['url','username','email','group']

请按如下方式更改

class UserSerializer(serializers.HyperlinkedModelSerializer):
  class Meta:
    model = User
    fields = ['url','username','email','groups']

User 模型中没有名为 'group' 的字段。相反,它是'groups'

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2015-07-20
    • 2018-04-09
    • 2016-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-05
    • 2012-04-18
    • 2019-07-20
    相关资源
    最近更新 更多