定制djoser创建用户端点 [英] Customize the djoser create user endpoint
问题描述
我将djoser用于身份验证。我想自定义djoser的创建用户端点。我有一个用户应用。这是我的用户模型
I am using djoser for auth purposes. I want to customize the create user end point of djoser. I have a User app. Here is my User model
from django.db import models
class User(models.Model):
email = models.CharField(max_length=100, blank=False)
name = models.CharField(max_length=100, blank=False)
last_name = models.CharField(max_length=100, blank=False)
account_address = models.CharField(max_length=30, blank=False)
password = models.CharField(max_length=100, blank=False)
这是我的序列化器
from rest_framework import serializers
from User.models import User
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'id', 'email', 'name', 'last_name', 'account_address', 'password')
,而我的User.urls.py看起来如下
and my User.urls.py looks like following
from django.conf.urls import url, include
from rest_framework.routers import DefaultRouter
from .views import UserViewSet
router = DefaultRouter()
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^account/', include('djoser.urls')),
]
,并且项目的url.py正在跟进
and project's url.py is follwing
from django.contrib import admin
from django.urls import path
from django.conf.urls import include, url
urlpatterns = [
path('admin/', admin.site.urls),
url(r'^users/', include('User.urls')),
url(r'^advertisements', include('advertisements.urls')),
url(r'^account', include('wallet.urls')),
]
但是当我转到用户/帐户/创建时,我无法使用自定义模型创建用户,但我看到djoser的默认创建用户视图。有人请告诉我我做错了。谢谢:)
but i am unable to create user with customized model instead when i go to user/account/create i see djoser's default create user view. Anybody please tell where I am doing wrong. Thanks :)
推荐答案
请记住,您已经设置了 AUTH_USER_MODEL
您的 User
模型。
Having in mind that you have set the AUTH_USER_MODEL
to your User
model.
只需导入Djoser用户注册序列化器并覆盖它即可。
Just import the Djoser User Registration Serializer And override it.
from djoser.serializers import UserCreateSerializer as BaseUserRegistrationSerializer
class UserRegistrationSerializer(BaseUserRegistrationSerializer):
class Meta(BaseUserRegistrationSerializer.Meta):
fields = ('url', 'id', 'email', 'name', 'last_name', 'account_address', 'password', )
您还可以在序列化程序中覆盖其他内容,例如创建和更新方法
You can also override other things in the serializer like create and update methods
in case if you want to customize it.
然后在settings.py
And in settings.py
DJOSER = {
...
'SERIALIZERS': {
'user_create': 'yourapp.serializer.UserRegistrationSerializer'
}
...
}
这篇关于定制djoser创建用户端点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!