定制djoser创建用户端点 [英] Customize the djoser create user endpoint

查看:76
本文介绍了定制djoser创建用户端点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆