会话跟踪
settings.py
# 允许session中可以保存普通对象[Django通过内建的模块自动操作序列化]
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
数据缓存到redis数据库
settings.py
# SESSION 数据缓存到redis数据库
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
---
一个小案例(work/day06中有体现)
#在子项目中新建tools.py 文件
# 导入需要的模块
from django.core.cache import cache
from . import models
def cache_index(change=False):
print('从redis中查询数据')
a_list = cache.get('article_list')
if a_list is None or change == True:
print('去数据库中查找数据')
a_list = models.Article.objects.all()
print('将查询到的数据加载到缓存中')
cache.set('article_list', a_list)
return a_list
#在view.py 中导入tools.py
def articel_publish(request):
'''
发表文章,发表文章后需要重新从数据库读取有关文章的信息加载到redis数据库中
:param request:
:return:
'''
if request.method == 'GET':
try:
author = request.session['login_user']
except:
return render(request, 'blog/login.html', {'err_msg': '你还没有登录,不能发表文章'})
else:
return render(request, 'blog/article_publish.html', {})
if request.method == 'POST':
title = request.POST['title']
content = request.POST['content']
author = request.session['login_user']
# 保存数据到数据库
article = models.Article(title=title, content=content, author=author)
article.save()
## 缓存到django-redis
` tools.cache_index(True)`
# 跳转到详情页面
return redirect(reverse('blog:articledetail', kwargs={'article_id': article.id}))
连接数据库
在models.py 中创建模型类 然后连接数据库
settings.py
import pymysql
pymysql.install_as_MySQLdb()
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'py1712_shopping',
'USER': 'root',
'PASSWORD': 'root',
}
}
数据库同步命令
python manage.py makemigrations 生成SQL语句
python manage.py migrate 写入数据库
管理子项目静态文件的模块
settings.py
INSTALLED_APPS = ['子项目名称']
路由访问端口你操作
settings.py
ALLOWED_HOSTS = [ '*' ]
启动项目:python manage.py runserver0.0.0.0:8000
0.0.0.0:可以匹配任何IP端口
对根项目下的static文件夹管理
settings.py
STATICFILES_DIRS = [
BASE_DIR + '/static/'
]