我已经阅读了"Django 睡觉"框架指南,并完成了所有的教程.每件事似乎都很有意义,工作起来也就像它应该做的那样.我让基本身份验证和会话身份验证按所述方式工作.

django rest framework - api guide

但是,我正在努力学习文档中的令牌身份验证部分,它有点欠缺,或者没有像教程那样深入.

django-rest-framework - token authentication

它说我需要为用户创建令牌,但是是否说明了Models.py中的位置?

有人能为初学者解释一下文档中的令牌身份验证部分吗?

推荐答案

不,不是在您的模型中.py--在模型方面,您所需要做的就是在您的INSTALLED_APPS中包含适当的应用程序(rest_framework.authtoken).这将为用户提供一个外键的令牌模型.

您需要做的是决定何时以及如何创建这些令牌对象.在您的应用程序中,是否每个用户都会自动获得令牌?还是仅限某些授权用户?或者只有在他们明确要求的时候?

如果每个用户都应该拥有一个令牌,那么您链接到的页面上有一段代码,告诉您如何设置信号以自动创建令牌:

@receiver(post_save, sender=User)
def create_auth_token(sender, instance=None, created=False, **kwargs):
    if created:
        Token.objects.create(user=instance)

(将this放在任何位置的model s.py文件中,它将在Django线程启动时注册)

如果只应在特定时间创建令牌,则在视图代码中,需要在适当的时间创建并保存令牌:

# View Pseudocode
from rest_framework.authtoken.models import Token

def token_request(request):
    if user_requested_token() and token_request_is_warranted():
        new_token = Token.objects.create(user=request.user)

创建(并保存)令牌后,它将可用于身份验证.

Django相关问答推荐

Django-无法显示基于字段值的元素

为特定表行更新或创建

Django `UniqueConstraint` 异常处理方式与 'unique=True' 相同

Django - 将 HTML 输出转换为变量

如果上下文中缺少变量,如何使 Django 模板引发错误

InvalidBasesError:无法解析 [] 的基础

验证 Django 模型对象的正确方法?

Django - 强制执行 ManyToManyField 唯一项

无效的命令 WSGIDaemonProcess 在 CentOS 6.7 上部署 Django 应用程序

Django UrlResolver,在运行时添加 url 进行测试

related_name 参数在 Django 模型中没有按预期工作?

Python Django 模板和测试变量是否为空或空字符串

如何在 Django 和 django-jsonfield 中将 JSONField 的默认值设置为空列表?

django post_save 更新信号

Django - 了解 X-Sendfile

django 管理列表中的外键显示

Django Rest Framework - 缺少静态目录

Django 发送邮箱

django rest 框架:从序列化程序 validate() 方法设置字段级错误

如何从 django 请求中获取完整的 url