婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Django rest framework如何自定義用戶表

Django rest framework如何自定義用戶表

熱門標簽:地圖標注自己和別人標注區別 打電話機器人營銷 商家地圖標注海報 聊城語音外呼系統 騰訊地圖標注沒法顯示 ai電銷機器人的優勢 孝感營銷電話機器人效果怎么樣 南陽打電話機器人 海外網吧地圖標注注冊

說明

Django 默認的用戶表 auth_user 包含 id, password, last_login, is_superuser, username, last_name, email, is_staff, is_active, date_joined, first_name 字段。這些基本字段不夠用時,在此基本表上拓展字段是很好選擇。本文介紹在 DRF(Django Rest Framework) 上使用自定義用戶表進行接口訪問控制的功能設計。

1. Django項目和應用創建

先裝必要的模塊

pip install django
pip install djangorestframework

創建項目文件夾、項目和應用

E:\SweetYaya> mkdir MyProj01
E:\SweetYaya> cd MyProj01
E:\SweetYaya\MyProj01> django-admin startproject MyProj01 .
E:\SweetYaya\MyProj01> django-admin startapp MyApp

同步數據庫

E:\SweetYaya\MyProj01> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  ...
  Applying sessions.0001_initial... OK

執行如下命令后測試訪問 http://127.0.0.1:8000/

E:\SweetYaya\MyProj01>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
June 07, 2021 - 21:16:57
Django version 3.2.4, using settings 'MyProj01.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

2. 自定義User表

打開 MyApp/models.py 文件,創建繼承自 AbstractUserUserProfile 類,給它添加 namemobile 字段,它就是我們自定義的用戶表。

from django.db import models
from django.contrib.auth.models import AbstractUser


class UserProfile(AbstractUser):
    name = models.CharField(max_length=30, null=True, blank=True, verbose_name="姓名")
    mobile = models.CharField(max_length=11, verbose_name="電話")

    class Meta:
        verbose_name = "用戶"
        verbose_name_plural = "用戶"

        def __str__(self):
            return self.name

3. 序列化和路由

我們直接在 MyProj01/url.py 中進行定義序列化方法和路由配置

from django.urls import path, include
from MyApp.models import UserProfile
from rest_framework import routers, serializers, viewsets


# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = UserProfile
        fields = ['url', 'username', 'name', 'mobile', 'email', 'is_staff']


# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = UserProfile.objects.all()
    serializer_class = UserSerializer


# Routers provide an easy way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register('users', UserViewSet)

# 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'))
]

3. DRF配置

找到 MyProj01/settings.py ,做如下配置

加入上面創建的應用和 rest_framework

INSTALLED_APPS = [
    'django.contrib.admin',
	...
    'rest_framework',
    'MyApp',
]

添加全局認證設置

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ]
}

修改默認用戶表,至此 settings.py 全部配置完成了。

AUTH_USER_MODEL = 'MyApp.UserProfile'

4. 同步數據庫

執行 makemigrations 命令

E:\SweetYaya\MyProj01> python manage.py makemigrations
Migrations for 'MyApp':
  MyApp\migrations\0001_initial.py
    - Create model UserProfile

執行 migrate 命令出現如下錯誤

E:\SweetYaya\MyProj01> python manage.py migrate
Traceback (most recent call last):
  File "manage.py", line 22, in module>
    main()
  File "manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\base.py", line 89, in wrapped
    res = handle_func(*args, **kwargs)
  File "D:\Program Files\Python36\lib\site-packages\django\core\management\commands\migrate.py", line 95, in handle
    executor.loader.check_consistent_history(connection)
  File "D:\Program Files\Python36\lib\site-packages\django\db\migrations\loader.py", line 310, in check_consistent_history
    connection.alias,
django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency MyApp.0001_initial on database 'default'.

解決辦法

makemigrations打開 settings.py ,注釋掉 INSTALL_APPS 中的
'django.contrib.admin',打開 urls.py ,注釋掉 urlpatterns 中的 admin,再 migrate 就不報錯了。最后注意把注釋內容恢復回來就好了。

E:\SweetYaya\MyProj01> python manage.py migrate
Operations to perform:
  Apply all migrations: MyApp, admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  ...
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying sessions.0001_initial... OK

5. 測試

執行命令

E:\SweetYaya\MyProj01>python manage.py runserver

訪問 http://127.0.0.1:8000/users/ 出現結果如下,此時表明配置成功,但是尚未進行用戶登錄無權訪問。

6. 命令行注冊用戶

進入 Python Shell

E:\SweetYaya\MyProj01> python manage.py shell
Python 3.6.6 (v3.6.6:4cf1f54eb7, Jun 27 2018, 03:37:03) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.5.0 -- An enhanced Interactive Python. Type '?' for help.

鍵入如下代碼

In [1]: from MyApp.models import UserProfile

In [2]: from django.contrib.auth.hashers import make_password

In [3]: ist = UserProfile(username='guest01',password=make_password('123456'))

In [4]: ist.save()

In [5]: ist = UserProfile(username='guest02',password=make_password('123456'))

In [6]: ist.save()

然后在數據庫中查看 MyApp_userprofile 表發現多了兩條記錄,添加成功,繼續訪問 http://127.0.0.1:8000/users/ 地址,使用用戶密碼登錄可見如下。測試完成。

到此這篇關于Django rest framework如何自定義用戶表的文章就介紹到這了,更多相關Django rest framework自定義用戶表內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Django restframework 框架認證、權限、限流用法示例
  • DjangoRestFramework 使用 simpleJWT 登陸認證完整記錄
  • 深度解析Django REST Framework 批量操作
  • Python3+PyCharm+Django+Django REST framework配置與簡單開發教程
  • Django REST Framework 分頁(Pagination)詳解
  • Django restful framework生成API文檔過程詳解
  • 自定義Django_rest_framework_jwt登陸錯誤返回的解決
  • django rest framework使用django-filter用法
  • django restframework serializer 增加自定義字段操作
  • Django REST framework 限流功能的使用

標簽:六盤水 楊凌 南寧 撫州 聊城 揚州 迪慶 牡丹江

巨人網絡通訊聲明:本文標題《Django rest framework如何自定義用戶表》,本文關鍵詞  Django,rest,framework,如何,自定義,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Django rest framework如何自定義用戶表》相關的同類信息!
  • 本頁收集關于Django rest framework如何自定義用戶表的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    高清国产一区二区| 国产成+人+日韩+欧美+亚洲| 一区二区免费在线播放| 久久蜜臀中文字幕| 7777精品伊人久久久大香线蕉| 高清久久久久久| 成人永久aaa| 91婷婷韩国欧美一区二区| 亚洲风情在线资源站| 国产亚洲一区二区三区四区| 五月婷婷色综合| 国产精品福利av| 欧美大片在线观看一区二区| 久久婷婷色综合| 一区二区三区欧美日韩| 婷婷久久综合九色综合绿巨人| 精品中文av资源站在线观看| 国产精品一区二区果冻传媒| 色久综合一二码| 欧美精品一区二| 中文字幕永久在线不卡| 亚洲sss视频在线视频| 成人白浆超碰人人人人| 欧美性大战xxxxx久久久| 日本一区二区三区久久久久久久久不| 麻豆精品精品国产自在97香蕉| 成人白浆超碰人人人人| 精品福利视频一区二区三区| 亚洲 欧美综合在线网络| 国产精品一区二区久久不卡 | 国产米奇在线777精品观看| 国产精品一区二区三区乱码| 欧美精品国产精品| 久久中文娱乐网| 国产精品久久久久7777按摩| 美女诱惑一区二区| 色综合咪咪久久| 欧美午夜视频网站| 久久久久久久久蜜桃| 欧美a级一区二区| 欧美日韩激情一区| 国产片一区二区三区| 亚洲一区二区视频| 欧美日韩国产免费| 色综合久久99| 无吗不卡中文字幕| 国产精品久久久久久久久免费桃花| 成人av在线播放网站| 婷婷国产在线综合| 欧美日韩免费观看一区三区| 麻豆国产精品视频| 日本一区免费视频| av不卡免费在线观看| 日韩av成人高清| 日韩毛片视频在线看| 欧美一二三四在线| 99久久精品免费| 激情六月婷婷综合| 亚洲免费观看高清完整版在线观看熊| 欧美一区二区日韩| 欧美在线观看视频一区二区三区| 国产色综合久久| 欧美v日韩v国产v| 91亚洲男人天堂| 激情图片小说一区| 久久电影网电视剧免费观看| 综合自拍亚洲综合图不卡区| 欧美日韩免费一区二区三区视频| 成人永久免费视频| 国产成人免费视频网站高清观看视频| 亚洲一级不卡视频| 久久综合色综合88| 久久综合给合久久狠狠狠97色69| 成人app在线| 国产一区二区美女| 免费精品视频在线| 午夜欧美大尺度福利影院在线看 | 精品1区2区3区| 一本一道久久a久久精品| 91视频一区二区| 日韩一区二区三区视频在线| 欧美精品在线一区二区| 国产人伦精品一区二区| 国产精品国产精品国产专区不蜜| 91麻豆精品国产自产在线观看一区| 91麻豆精东视频| 欧美在线观看视频一区二区| 亚洲色欲色欲www在线观看| av亚洲产国偷v产偷v自拍| 2017欧美狠狠色| 狠狠网亚洲精品| 国产欧美一区二区精品性| 国产一区福利在线| wwww国产精品欧美| 色诱视频网站一区| 精品一区二区三区免费播放| 国产精品视频看| 91久久人澡人人添人人爽欧美| 日本伊人色综合网| 5566中文字幕一区二区电影| 国产精品18久久久久久久久久久久 | 久久国产精品99精品国产| 精品国产百合女同互慰| 91丨九色丨蝌蚪富婆spa| 一区二区三区在线视频观看| 日韩美女视频一区二区在线观看| 成人app在线| 成人h版在线观看| 亚洲午夜av在线| 国产欧美一区二区精品性| 久久日韩精品一区二区五区| 欧美视频在线一区二区三区| 粉嫩欧美一区二区三区高清影视 | 欧美视频一区二区三区在线观看 | 精品国产乱码久久| 91在线高清观看| 国产成人免费视| 国内精品伊人久久久久av一坑 | 粉嫩蜜臀av国产精品网站| 亚洲gay无套男同| 日本一区二区综合亚洲| xnxx国产精品| 久久影音资源网| 欧美一区二区久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日韩欧美视频一区| 国产激情偷乱视频一区二区三区| 久久丁香综合五月国产三级网站| 精品亚洲aⅴ乱码一区二区三区| 亚洲四区在线观看| 亚洲欧洲成人精品av97| 国产精品美女www爽爽爽| 日韩一级完整毛片| 国产亚洲成av人在线观看导航 | 国产精品超碰97尤物18| 国产精品久久久久久一区二区三区| 日韩理论电影院| 日韩不卡一区二区| 色天天综合色天天久久| 日日骚欧美日韩| 精品在线亚洲视频| 欧美日韩免费视频| 99精品国产91久久久久久 | 久久成人18免费观看| 成人av网址在线观看| 国产宾馆实践打屁股91| 91色婷婷久久久久合中文| 不卡影院免费观看| 在线观看一区不卡| 国产欧美1区2区3区| 日韩高清不卡一区二区三区| 欧美色区777第一页| 国产精品久久久久久久久久久免费看| 亚洲一二三区不卡| 91小视频免费观看| 亚洲国产日韩av| 国产精品网站在线播放| 亚洲激情网站免费观看| 天堂一区二区在线免费观看| av网站免费线看精品| 亚洲精品一区二区三区影院| 日本一区二区成人在线| 美女高潮久久久| 懂色中文一区二区在线播放| 欧美疯狂做受xxxx富婆| 亚洲欧洲在线观看av| 精品一区二区三区免费播放| 欧美日韩亚州综合| fc2成人免费人成在线观看播放| 精品国产制服丝袜高跟| 日本不卡不码高清免费观看| 成人免费高清在线| 亚洲欧洲日产国产综合网| 成人黄色电影在线| 中文字幕乱码久久午夜不卡 | 日本韩国欧美国产| 亚洲三级电影网站| 欧美亚洲一区二区在线观看| 亚洲欧美另类图片小说| www.亚洲色图.com| 亚洲国产日韩一级| 欧美四级电影网| 日韩成人精品在线| 51午夜精品国产| 国产成人av一区| 国产精品免费看片| 欧美日产在线观看| 成人av电影在线观看| 久久97超碰色| 久久九九久久九九| 不卡在线观看av| 久久精品国产99国产| 亚洲网友自拍偷拍| 欧美一区二区性放荡片| 国模娜娜一区二区三区| 一区二区高清免费观看影视大全| 制服丝袜中文字幕一区| 国产99精品国产| 三级欧美在线一区| 久久免费国产精品|