前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django实战-生鲜电商-小结-下

Django实战-生鲜电商-小结-下

作者头像
小团子
发布2019-07-18 16:12:34
6030
发布2019-07-18 16:12:34
举报
文章被收录于专栏:数据云团数据云团

由于本项目配置了缓存机制,需要在 settings.py 文件中设置。配置redis作为cache和session的存储。

代码语言:javascript
复制
pip install django-redis

① 缓存和 session 配置

代码语言:javascript
复制
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/5",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}
代码语言:javascript
复制
# 设置允许保存session
SESSION_SAVE_EVERY_REQUEST = True
# 设置session存放在缓存中
SESSION_ENGINE = ‘django.contrib.sessions.backends.cache‘
# 使用默认选项的缓存设置存放session
SESSION_CACHE_ALIAS = "default"
# 设置session过期时间,关闭浏览器时session过期(cookies) 和设置固定时间后过期 只能二选一
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
# 30分钟后session过期, 只能和关闭时浏览器失效 二选一
# SESSION_COOKIE_AGE=5*60

会发现,一些常见的配置都会在 settings.py 文件中设置,比如时间、语言、缓存、邮件、登录重定向、重载自定义用户模型。

② 登录重定向

使用django系统的登录状态装饰器时,没有登录的话,跳往登录页面后路径是/acount/login 需要重新指定:

代码语言:javascript
复制
# 登录的url, login_required 装饰器使用
LOGIN_URL = '/users/login'

③ 邮箱

本项目使用的是 163 的邮箱,在个人的 163 邮箱中需要打开

代码语言:javascript
复制
# Email
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 25
EMAIL_HOST_USER = ''
EMAIL_HOST_PASSWORD = ''
EMAIL_FROM = ''

④ 重载自定义用户模型

django 自带的用户模型,不能满足开发需求,可以自定义重载这两个用户模型类

代码语言:javascript
复制
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import AbstractBaseUser

需要将自定义的用户重载到 settings.py 文件中

代码语言:javascript
复制
# django认证系统使用的用户模型
AUTH_USER_MODEL = "users.User"

⑤ 读写分离路由器

通过配置数据库路由,来自动实现,这样就不需要每次读写都手动指定数据库了。数据库路由中提供了四个方法。这里这里主要用其中的两个:def db_for_read()决定读操作的数据库,def db_for_write()决定写操作的数据库。

代码语言:javascript
复制
class MasterSlaveDBRouter(object):
    """读写分离路由"""
    def db_for_read(self, model, **hints):
        """读"""
        return "slave"

    def db_for_write(self, model, **hints):
        """写"""
        return "default"

    def allow_relation(self, obj1, obj2, **hints):
        """允许关联查询"""
        return True
配置Router

在settings.py中指定 DATABASE_ROUTERS

代码语言:javascript
复制
DATABASE_ROUTERS = ["utils.db_router.MasterSlaveDBRouter"]
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置Router
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档