Django自带用户验证系统
Django自带用户验证系统django验证系统背景
解决问题:
当用户登录的时候,则需要进行验证,而用户登录了以后还希望能够记录它的登录状态,为此django提供了验证和记住登录状态的函数
参考文档:https://docs.djangoproject.com/zh-hans/3.1/topics/auth/default/
使用
在项目的settings.py文件中添加配置信息
12# 使用django自带的用户验证时,需要配置该选项,否则验证的结果一直为NoneAUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.AllowAllUsersModelBackend']
在视图中使用
12345678910111213# 使用django自带的验证系统# 用户登录以后,一般需要记录用户的登录状态,# 此时不建议将其存储在django自身的session表中,而是将其记录在redis数据库中from django.contrib.auth import authenticate, login# 登 ...
Django提供激活链接
激活链接加密背景
解决问题:当我们决定使用邮箱验证的时候,如果此时直接使用明显的数据,则不够安全,因此引入链接加密的概念
使用模块:itsdangerous
参考文档:http://itsdangerous.readthedocs.io/
使用12345678910111213141516171819202122# 加密的时候需要用到该包from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 引入异常from itsdangerous import SignatureExpired, BadSignature# 加密的时候需要用到密钥,此处我们使用settings.py文件中# 这个settings对应的就是项目目录下的settings.py文件from django.conf import settings# 通过创建TimedJSONWebSignatureSerializer对象,# 第一个参数为加密的密钥,自己随便设,第二个参数是该加密的过期时间为1小时serializer = Seria ...
Django实现异步邮件发送
Django实现异步邮件发送邮件发送背景
使用模块:django自带的send_mail()方法
使用
项目的setting中添加配置文件
1234567# 配置django自带的邮件发送系统EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST = 'smtp.163.com'EMAIL_PORT = 465EMAIL_HOST_USER = '88888888@163.com'EMAIL_HOST_PASSWORD = '88888888'EMAIL_FROM = '888<8888888@163.com>'
使用send_mail方法
123456789101112# 给用户发送邮件subject = '用户激活邮件'# 如果只是发送文字类邮件,则直接填在message中message = ''sender = '888<8 ...
Django生成静态文件
Django静态页面自动生成背景
解决问题
有些页面的更新频率并不高,虽然也依赖于数据库的数据,但是该数据更新的周期长、用户的访问频率高,针对这样的页面没有必要每次访问的时候都要去查询数据库,这样只会增加数据库的负载,因此想到一个办法是直接生成静态的页面提供给用户进行访问,只有当后台管理员更新数据的时候,这个时候才重新生成静态文件。
使用模块
django-celery
使用
创建celery任务
1234567891011121314151617181920212223242526272829303132333435363738from goods.models import GoodsType, IndexTypeGoodsType, IndexPromotionBanner, IndexGoodsBannerfrom django.template import loaderfrom django.conf import settings@app.taskdef static_index(): '''生成静态页面''& ...
Django配合Redis实现数据缓存
Django配合Redis实现数据缓存django-redis缓存背景
解决问题:
django默认将缓存存放在django-session数据表中,但是这样每次进行用户状态查询的时候都会导致数据库的反复查询,效率不好,因此决定采用redis作为缓存服务器
用户的浏览记录很多时候也需要保存下来,但是我们不能放在数据库中,最好是缓存在redis中
使用模块
django-redis
参考文档:
https://django-redis-chs.readthedocs.io/zh_CN/latest/
使用
安装包
1pip install django-redis
修改项目中的settings.py配置文件,添加如下配置项
12345678910111213141516# 本质就是告诉django,将session的缓存服务器切换到redis# 配置Redis作为缓存服务器CACHES = { "default": { "BACKEND": "django_redis.cache.Re ...
Django添加富文本插件
Django添加富文本编辑器背景有些内容部分不仅仅只展示文字,有时候还要展示图片和各种样式标题等,针对于此,故引入了富文本编辑器–tinymce
使用
安装环境
1pip install django-tinymce
在项目的settings.py文件中添加配置内容
123456789101112# 配置tinymce的功能TINYMCE_DEFAULT_CONFIG = { 'theme': 'advanced', # 标识添加的功能,此处最大化 'width': 600, 'height': 400,}# 需要将tinymce项目注册进app中INSTALLED_APPS = ( ... 'tinymce',)
在项目的urls.py文件中配置路由
1234urlpatterns = [ ... path(r'tinymce/', include('tinymce.urls') ...
Django自定义用户表
Django自定义用户表背景有时候我们需要自己定义django用户表,而django也提供了这样的接口供我们使用
使用
在项目settings.py文件中添加配置项
123# django认证系统使用的模型类,# 当配置该选项后,创建迁移时,就不会再使用默认的auth_user,而是使用该配置指向的数据表AUTH_USER_MODEL = 'users.User'
在创建User表的模型类的时候,让其继承AbstractUser类
123456789101112# 导入AbstractUser类from django.contrib.auth.models import AbstractUser# BaseModel是我们自定义的模型基类,里面定义了所有表都有的字段信息# 通过该方法生成User表后,django就不会再生成默认的django_user表了class User(AbstractUser, BaseModel): '''用户个人信息表''' class Meta: ...
Django使用全文搜索引擎
Django全文搜索引擎背景
解决问题
网站首页提供了搜索框,这样的搜索框是为了在数据库进行数据检索的,但是如果直接在数据库中使用like进行查询数据会非常的慢,因此考虑到引入了全文检索的概念,借助搜索引擎能够对文字进行分词,并构建起文字对应的数据库中信息的关系,所以要比模糊查询的效率高很多。
如果我们自己使用搜索引擎,也是可以实现全文检索,但是其中可能要繁琐一些,所以我们可以借用已经写好的全文搜索框架,然后搭配对应的搜索引擎即可
使用框架
django-haystack:全文搜索框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,参考:http://haystacksearch.org/
whoosh:纯python编写的搜索引擎,性能偏低,但是很稳定,参考:https://whoosh.readthedocs.io/en/latest/
jieba:免费的中文分词包,中文分词包也有收费的,可以自取哟。
使用
安装环境包
1234567# django-haystack依赖环境pip install setuptools_scm ...