16:00 Django 分享图片
问题:Django project中各个app如何协作?
python .\manage.py makemigrations images
预备迁移构建数据库
19:00 Django 身份验证
参考:https://conyli.cc/chapter04.html
django提供了一个验证模块框架,具备用户验证,会话控制(session),权限和用户组功能并且自带一组视图,用于控制常见的用户行为如登录、登出、修改和重置密码。
验证模块框架位于django.contrib.auth,也被其他Django的contrib库所使用。
django 内置视图
Django内置很多视图和表单可供直接使用,上一节的登录视图就是一个很好的例子。在大多数情况下都可以使用Django内置的验证模块而无需自行编写。
Django在django.contrib.auth.views中提供了如下基于类的视图供使用:
1.LoginView:处理登录表单填写和登录功能(和我们写的功能类似)
2.LogoutView:退出登录
3.PaswordChangeView:处理一个修改密码的表单,然后修改密码
4.PasswordChangeDoneView:成功修改密码后执行的视图
5.PasswordResetView:用户选择重置密码功能执行的视图,生成一个一次性重置密码链接和对应的验证token,然后发送邮件给用户
6.PasswordResetDoneView:通知用户已经发送给了他们一封邮件重置密码
7.PasswordResetConfirmView:用户设置新密码的页面和功能控制
8.PasswordResetCompleteView:成功重置密码后执行的视图
上传图片
允许用户上传图片,必须配置Django让其提供媒体文件服务,在settings.py中加入下列内容:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
注意!!
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
这样设置后,Django开发服务器在DEBUG=True的情况下会提供媒体文件服务。
static()方法仅用于开发环境,在生产环境中,不要用Django提供静态文件服务(而是用Web服务程序比如NGINX等提供静态文件服务)。
消息框架
当用户在我们的站点执行各种操作时,在一些关键操作可能需要通知用户其操作是否成功。Django有一个内置消息框架可以给用户发送一次性的通知。
消息模块位于django.contrib.messages,并且已经被包含在初始化的INSTALLED_APPS设置中,还有一个默认启用的中间件叫做django.contrib.messages.middleware.MessageMiddleware,共同构成了消息系统。
自定义验证后端
Django允许对不同的数据来源采用不同的验证方式。在settings.py里有一个AUTHENTICATION_BACKENDS设置列出了项目中可使用的验证后端。其默认是:
['django.contrib.auth.backends.ModelBackend']
https
现在HTTPS协议使用的很广泛,为了安全起见,浏览器一般不会允许HTTP协议的小书签程序运行,因此必须给我们自己的网站一个HTTPS地址,但是Django的测试服务器无法自动支持HTTPS,为了测试小书签的功能,使用Ngrok可以建立一个隧道将自己的本机通过HTTP和HTTPS地址向外提供服务。