返回顶部
首页 > 资讯 > 精选 >Django rest framework自定义用户表的方法
  • 369
分享到

Django rest framework自定义用户表的方法

2023-06-15 10:06:20 369人浏览 独家记忆
摘要

这篇文章主要介绍了Django rest framework自定义用户表的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明DjanGo 默认的用户表 auth_user

这篇文章主要介绍了Django rest framework自定义用户表的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

说明

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:\SweetYaya\MyProj01> django-admin startproject MyProj01 .E:\SweetYaya\MyProj01> django-admin startapp MyApp

同步数据库

E:\SweetYaya\MyProj01> 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:\SweetYaya\MyProj01>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 文件,创建继承自 AbstractUserUserProfile 类,给它添加 namemobile 字段,它就是我们自定义的用户表。

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.name

3. 序列化和路由

我们直接在 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 = 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 makemigrationsMigrations for 'MyApp':  MyApp\migrations\0001_initial.py    - Create model UserProfile

执行 migrate 命令出现如下错误

E:\SweetYaya\MyProj01> 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 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 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... OK

5. 测试

执行命令

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

访问 http://127.0.0.1:8000/users/ 出现结果如下,此时表明配置成功,但是尚未进行用户登录无权访问。

Django rest framework自定义用户表的方法

6. 命令行注册用户

进入 Python shell

E:\SweetYaya\MyProj01> 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自定义用户表的方法”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: Django rest framework自定义用户表的方法

本文链接: https://lsjlt.com/news/279693.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django rest framework自定义用户表的方法
    这篇文章主要介绍了Django rest framework自定义用户表的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。说明Django 默认的用户表 auth_user...
    99+
    2023-06-15
  • Django rest framework如何自定义用户表
    目录说明1. Django项目和应用创建2. 自定义User表3. 序列化和路由3. DRF配置4. 同步数据库5. 测试6. 命令行注册用户说明 Django 默认的用户表 aut...
    99+
    2024-04-02
  • Django自定义权限及用户分组
    登录、注销和登录限制: 登录 在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用django.contrib.auth...
    99+
    2024-04-02
  • Django 中怎么自定义用户模块
    这篇文章将为大家详细讲解有关Django 中怎么自定义用户模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、概述Django中自带的User Model使用起来是比较方便的,但是通常我们...
    99+
    2023-06-02
  • 在Django中创建自己的自定义用户模型
    目录1. Django安装2.创建Django应用3.该应用程序的自定义模型4.迁移模型自定义用户模型有什么需求? 创建自己的自定义用户模型至关重要。将来,如果要对模型进行一些更改,...
    99+
    2024-04-02
  • Django细致讲解多对多使用through自定义中间表方法
    目录多对多中间表详解默认中间表通过through自定义中间表多对多中间表详解 我们都知道对于ManyToMany字段,Django采用的是第三张中间表的方式。通过这第三张表,来关联M...
    99+
    2024-04-02
  • SQLServer删除自定义数据库用户的方法
    这篇文章将为大家详细讲解有关SQLServer删除自定义数据库用户的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。删除用户自定义数据库用户注意事项不能从数据库中删除拥...
    99+
    2024-04-02
  • 自定义drupal注册表单的方法
    本文实例讲述了自定义drupal注册表单的方法。分享给大家供大家参考。具体实现方法如下: drupal默认用户注册表单中只有用户名称,帐号密码,邮箱等字段,如果想对用户做一些好的交互,必须要用到用户一些稍微详细的信息,而...
    99+
    2022-06-12
    自定义 drupal 注册表单 方法
  • Android自定义view绘制表格的方法
    本文实例为大家分享了Android自定义view绘制表格的具体代码,供大家参考,具体内容如下 先上效果图 平时很少有这样的表格需求,不过第一想法就是自定义view绘制表格,事实上我...
    99+
    2024-04-02
  • qt自定义表格的方法是什么
    在Qt中,可以使用QTableView类来创建和操作表格。下面是一些自定义表格的方法:1. 设置表格模型:使用QStandardIt...
    99+
    2023-09-29
    qt
  • SpringSecurity自定义Form表单使用方法讲解
    目录背景实验-HttpBasic实验-自定义登录页面实验-自定义登录接口实验-自定义登录数据参数实验-自定义登录失败、成功处理器实验-自定义登录成功跳转页面实验-自定义退出接口背景 ...
    99+
    2023-01-17
    SpringSecurity自定义Form表单 SpringSecurity Form表单
  • 帝国cms使用自定义函数获取用户发表新闻数量的方法
    介绍了帝国cms系统中通过用户自定义函数获取用户发表新闻数量的方法,主要是分享下帝国cms自定义函数功能。 在帝国cms中实现获取用户发表的新闻数量,没有现成的方法,不过可以用自定义函数来实现,一起来看看。 帝国cm...
    99+
    2022-06-12
    自定义函数 文章数
  • WordPress自定义表情及其路径的方法
    下面讲解使用方法: 第一步:下载weisay_smiley.zip,解压,将表情文件夹smiley和smiley.php一起上传到你目前使用的主题目录下面。 DownLoad   第二步:在functions.php添加...
    99+
    2022-06-12
    定义表情 路径
  • Linux用户自定义at、cron计划任务执行的方法
    linux系统中有两种计划任务,一种是只会执行一次 at 计划任务,一种是可以周期性地执行的 cron 计划任务 at 一次性计划任务 描述 在指定的时间执行特定命令(单次),也称为延时动作任务。 用法 at 时间...
    99+
    2022-06-04
    Linux at cron 计划任务
  • git用户自定义变量查看修改及调用的方法
    这篇文章主要介绍“git用户自定义变量查看修改及调用的方法”,在日常操作中,相信很多人在git用户自定义变量查看修改及调用的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git用户自定义变量查看修改及调用...
    99+
    2023-06-30
  • React自定义hook的方法
    目录什么是hook常用的有哪些hook自定义hook什么是hook Hook是 React 16.8 的新增特性。它通常与函数式组件同时使用。可以使函数式组件在不编写 class 的...
    99+
    2024-04-02
  • Vue2安装使用MonacoEditor方式(自定义语法,自定义高亮,自定义提示)
    目录1.安装MonacoEditor2.配置vue.config.js文件3.建立组件monaco.vue4.建立语法提示文件sql.js5.父组件引入monaco.vue总结1.安...
    99+
    2023-05-16
    Vue2安装MonacoEditor Vue2使用MonacoEditor Vue2 MonacoEditor
  • WordPress 自定义文章列表列的实现方法
    上一篇,我们使用 Meta Box 为文章添加了一个“推荐指数”字段。添加后用了一段时间,似乎不那么方便,编辑文章虽然方便了,但是在文章列表里却不能直观的显示出文章推荐指数,而且不能根据推荐指数来...
    99+
    2022-06-12
    WordPress 自定义 文章列表
  • validator自定义表单验证的方法是什么
    Validator自定义表单验证的方法是使用`Validator`类的`extend`方法来扩展自定义的验证规则。使用`extend...
    99+
    2023-08-14
    validator
  • Android使用自定义字体的方法
    本文实例讲述了Android使用自定义字体的方法。分享给大家供大家参考,具体如下: 一、问题: 作为android初学者,在做一个游戏,游戏的标题我用的是TextView,an...
    99+
    2022-06-06
    自定义 方法 字体 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作