Django API 开发:实现用户登录与注册(上)

简介: 现在,我们需要更新身份验证系统以使用令牌。 第一步是更新我们的 DEFAULT_AUTHENTICATION_CLASSES 设置以使用 TokenAuthentication

实现 token 认证

现在,我们需要更新身份验证系统以使用令牌。 第一步是更新我们的 DEFAULT_AUTHENTICATION_CLASSES 设置以使用 TokenAuthentication ,如下所示:

# blog_project/settings.py
REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated', 
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [ 
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.TokenAuthentication', # new
    ], 
}


我们保留 SessionAuthentication,因为我们的 Browsable API 仍需要它,但现在使用令牌在 HTTP 标头中来回传递身份验证凭据。


我们还需要添加 authtoken 应用,该应用会在服务器上生成令牌。 它包含在 Django REST Framework 中,但必须添加到我们的 INSTALLED_ APPS 设置中:

# blog_project/settings.py
INSTALLED_APPS = [ 
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 3rd-party apps
    'rest_framework',
    'rest_framework.authtoken', # new
    # Local
    'posts.apps.PostsConfig', 
]


由于我们对 INSTALLED_APPS 进行了更改,因此我们需要同步数据库。 使用 Control + c 停止服务器。 然后运行以下命令。

(blogapi) $ python manage.py migrate


现在再次启动服务器。

(blogapi) $ python manage.py runserver


如果您访问 http://127.0.0.1:8000/admin/ 上的 Django admin,则会看到顶部现在有一个 Tokens 部分。 确保您使用超级用户帐户登录才能访问。


网络异常,图片无法展示
|


单击令牌链接以转到令牌页面,网址为:http://127.0.0.1:8000/admin/authtoken/token/


网络异常,图片无法展示
|


当前没有令牌可能令人惊讶。 毕竟我们有现有用户。 但是,仅在有用于用户登录的 API 调用之后才生成令牌。我们尚未这样做,因此尚无令牌。 我们将很快!

终端

我们还需要创建端点,以便用户可以登录和注销。 为此,我们可以创建一个专用的用户应用程序,然后添加我们自己的网址,视图和序列化程序。 但是,用户身份验证是我们真正不想犯错误的领域。 并且由于几乎所有的 API 都需要此功能,因此可以使用一些优秀且经过测试的第三方程序包是有道理的。


值得注意的是,我们将结合使用 django-rest-authdjango-allauth 来简化操作。 对于使用第三方软件包,请不要感到难过。 它们存在是有原因的,甚至最好的 Django 专业人士始终都依赖它们。 不必重新设计轮子!

相关文章
|
4月前
|
存储 前端开发 应用服务中间件
Django 实战:静态文件与媒体文件从开发配置到生产部署
Django项目中,静态文件(Static Files)和媒体文件(Media Files)是两类不同用途的文件。本文详细介绍了它们的区别、配置方法以及在开发与生产环境中的处理方式,并结合用户头像上传功能进行实战演示,最后讲解了如何通过Nginx或OpenResty部署静态与媒体文件服务。
216 1
|
12月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
512 67
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
652 45
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
731 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
358 2
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
345 0
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
245 2
|
消息中间件 存储 监控
Django后端架构开发:Celery异步调优,任务队列和调度
Django后端架构开发:Celery异步调优,任务队列和调度
449 1
|
JSON API 数据安全/隐私保护
哇塞!Django REST framework 太逆天啦!构建 API 服务从未如此轻松,你还不来试试?
【8月更文挑战第31天】Django REST framework(DRF)是基于Django框架的高效Web API开发工具,提供序列化、视图集、路由等功能,简化API构建流程。使用DRF可轻松实现数据的序列化与反序列化,并支持权限管理和认证机制以保障API安全。安装DRF只需通过`pip install djangorestframework`命令。要创建基本项目,先安装Django并创建新应用,定义模型、序列化器及视图集,最后配置路由。测试API时,可通过Postman发送HTTP请求验证功能。无论项目大小,DRF均能提供强大支持。
206 0
|
SQL Shell API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API