【发布时间】:2020-08-25 13:15:46
【问题描述】:
本题基于here。我正在为我的 Web 应用程序设置 Django REST 框架,并尝试设置用户帐户。根据 REST 文档,他们将所有帐户代码放在主项目目录中的示例中,并在一个单独的应用程序中也这样做了。这是我所拥有的:
urls.py
from django.contrib import admin
from django.urls import include, path
from django.conf.urls import url
from rest_framework import routers
from . import views
router = routers.DefaultRouter()
router.register('users', views.UserViewSet)
urlpatterns = [
path('admin/', admin.site.urls),
url('', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]
序列化器.py
from django.contrib.auth.models import User
from rest_framework import serializers
class UserSerializer(serializers.ModelSerializer):
password = serializers.CharField(write_only=True)
def create(self, validated_data):
user = User.objects.create(
username=validated_data['username']
)
user.set_password(validated_data['password'])
user.save()
return user
class Meta:
model = User
# Tuple of serialized model fields (see link [2])
fields = ( "id", "username", "password", )
views.py
from rest_framework import viewsets, permissions
from rest_framework.generics import CreateAPIView
from django.contrib.auth.models import User
from .serializers import UserSerializer
# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated]
class CreateUserView(CreateAPIView):
model = User
permission_classes = [
permissions.AllowAny
]
serializer_class = UserSerializer
我曾尝试在 Chrome 中使用 Boomerang REST 客户端向此 API 发布数据,但它总是返回 403 错误,提示“用户名/密码无效”。具体来说,我使用查询字符串和 2 个参数发送到 http://127.0.0.1:8000/users/create/:用户名和密码。我也尝试将它作为 JSON 发送,它返回相同。任何帮助将不胜感激。
【问题讨论】:
-
能否为该请求添加django进程的控制台调试
-
听起来您是在说您正在向
/users/create/?username=user&password=password发帖。对吗?
标签: python django django-rest-framework