电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Django rest framework如何自定義用戶表

瀏覽:5日期:2024-09-04 15:25:51
目錄說明1. Django項目和應用創建2. 自定義User表3. 序列化和路由3. DRF配置4. 同步數據庫5. 測試6. 命令行注冊用戶說明

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 djangopip install djangorestframework

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

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

同步數據庫

E:SweetYayaMyProj01> python manage.py migrateOperations to perform: Apply all migrations: admin, auth, contenttypes, sessionsRunning 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:SweetYayaMyProj01>python manage.py runserverWatching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).June 07, 2021 - 21:16:57Django 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 文件,創建繼承自 AbstractUser 的 UserProfile 類,給它添加 name 和 mobile 字段,它就是我們自定義的用戶表。

from django.db import modelsfrom django.contrib.auth.models import AbstractUserclass 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.name3. 序列化和路由

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

from django.urls import path, includefrom MyApp.models import UserProfilefrom rest_framework import routers, serializers, viewsets# Serializers define the API representation.class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta:model = UserProfilefields = [’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:SweetYayaMyProj01> python manage.py makemigrationsMigrations for ’MyApp’: MyAppmigrations0001_initial.py - Create model UserProfile

執行 migrate 命令出現如下錯誤

E:SweetYayaMyProj01> python manage.py migrateTraceback (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 FilesPython36libsite-packagesdjangocoremanagement__init__.py', line 419, in execute_from_command_line utility.execute() File 'D:Program FilesPython36libsite-packagesdjangocoremanagement__init__.py', line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File 'D:Program FilesPython36libsite-packagesdjangocoremanagementbase.py', line 354, in run_from_argv self.execute(*args, **cmd_options) File 'D:Program FilesPython36libsite-packagesdjangocoremanagementbase.py', line 398, in execute output = self.handle(*args, **options) File 'D:Program FilesPython36libsite-packagesdjangocoremanagementbase.py', line 89, in wrapped res = handle_func(*args, **kwargs) File 'D:Program FilesPython36libsite-packagesdjangocoremanagementcommandsmigrate.py', line 95, in handle executor.loader.check_consistent_history(connection) File 'D:Program FilesPython36libsite-packagesdjangodbmigrationsloader.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:SweetYayaMyProj01> python manage.py migrateOperations to perform: Apply all migrations: MyApp, admin, auth, contenttypes, sessionsRunning 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... OK5. 測試

執行命令

E:SweetYayaMyProj01>python manage.py runserver

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

Django rest framework如何自定義用戶表

6. 命令行注冊用戶

進入 Python Shell

E:SweetYayaMyProj01> python manage.py shellPython 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 informationIPython 6.5.0 -- An enhanced Interactive Python. Type ’?’ for help.

鍵入如下代碼

In [1]: from MyApp.models import UserProfileIn [2]: from django.contrib.auth.hashers import make_passwordIn [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 rest framework自定義用戶表內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Django
相關文章:
主站蜘蛛池模板: 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 大流量卧式砂磨机_强力分散机_双行星双动力混合机_同心双轴搅拌机-莱州市龙跃化工机械有限公司 | 电磁铁_小型推拉电磁铁_电磁阀厂家-深圳市宗泰电机有限公司 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 挖掘机挖斗和铲斗生产厂家选择徐州崛起机械制造有限公司 | 塑木弯曲试验机_铜带拉伸强度试验机_拉压力测试台-倾技百科 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 信阳市建筑勘察设计研究院有限公司 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 校园文化空间设计-数字化|中医文化空间设计-党建|法治廉政主题文化空间施工-山东锐尚文化传播公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 洛阳防爆合格证办理-洛阳防爆认证机构-洛阳申请国家防爆合格证-洛阳本安防爆认证代办-洛阳沪南抚防爆电气技术服务有限公司 | 山东包装,山东印刷厂,济南印刷厂-济南富丽彩印刷有限公司 | 济南菜鸟驿站广告|青岛快递车车体|社区媒体-抖音|墙体广告-山东揽胜广告传媒有限公司 | 精密线材测试仪-电线电缆检测仪-苏州欣硕电子科技有限公司 | 丹佛斯变频器-Danfoss战略代理经销商-上海津信变频器有限公司 | 金属管浮子流量计_金属转子流量计厂家-淮安润中仪表科技有限公司 | 恒温油槽-恒温水槽-低温恒温槽厂家-宁波科麦仪器有限公司 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 【星耀裂变】_企微SCRM_任务宝_视频号分销裂变_企业微信裂变增长_私域流量_裂变营销 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 鑫达滑石-辽宁鑫达滑石集团 | 微型气泵-真空-蠕动-水泵-厂家-深圳市品亚科技有限公司 | 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库-首页-东莞市傲马网络科技有限公司 | 除甲醛公司-甲醛检测治理-杭州创绿家环保科技有限公司-室内空气净化十大品牌 | 工业CT-无锡璟能智能仪器有限公司| 高温热泵烘干机,高温烘干热泵,热水设备机组_正旭热泵 | RFID电子标签厂家-上海尼太普电子有限公司| 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 玉米深加工设备|玉米加工机械|玉米加工设备|玉米深加工机械-河南成立粮油机械有限公司 | 上海诺狮景观规划设计有限公司 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | 健康管理师报考条件,考试时间,报名入口—首页 | 尾轮组_头轮组_矿用刮板_厢式刮板机_铸石刮板机厂家-双驰机械 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 广州监控安装公司_远程监控_安防弱电工程_无线wifi覆盖_泉威安防科技 | 乳化沥青设备_改性沥青设备_沥青加温罐_德州市昊通路桥工程有限公司 | 广东成考网-广东成人高考网| 手板-手板模型-手板厂-手板加工-生产厂家,[东莞创域模型] |