會(huì)話跟蹤
settings.py
# 允許session中可以保存普通對(duì)象[Django通過(guò)內(nèi)建的模塊自動(dòng)操作序列化]
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
數(shù)據(jù)緩存到redis數(shù)據(jù)庫(kù)
settings.py
# SESSION 數(shù)據(jù)緩存到redis數(shù)據(jù)庫(kù)
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
---
一個(gè)小案例(work/day06中有體現(xiàn))
#在子項(xiàng)目中新建tools.py 文件
# 導(dǎo)入需要的模塊
from django.core.cache import cache
from . import models
def cache_index(change=False):
print('從redis中查詢數(shù)據(jù)')
a_list = cache.get('article_list')
if a_list is None or change == True:
print('去數(shù)據(jù)庫(kù)中查找數(shù)據(jù)')
a_list = models.Article.objects.all()
print('將查詢到的數(shù)據(jù)加載到緩存中')
cache.set('article_list', a_list)
return a_list
#在view.py 中導(dǎo)入tools.py
def articel_publish(request):
'''
發(fā)表文章,發(fā)表文章后需要重新從數(shù)據(jù)庫(kù)讀取有關(guān)文章的信息加載到redis數(shù)據(jù)庫(kù)中
:param request:
:return:
'''
if request.method == 'GET':
try:
author = request.session['login_user']
except:
return render(request, 'blog/login.html', {'err_msg': '你還沒(méi)有登錄,不能發(fā)表文章'})
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']
# 保存數(shù)據(jù)到數(shù)據(jù)庫(kù)
article = models.Article(title=title, content=content, author=author)
article.save()
## 緩存到django-redis
` tools.cache_index(True)`
# 跳轉(zhuǎn)到詳情頁(yè)面
return redirect(reverse('blog:articledetail', kwargs={'article_id': article.id}))
連接數(shù)據(jù)庫(kù)
在models.py 中創(chuàng)建模型類 然后連接數(shù)據(jù)庫(kù)
settings.py
import pymysql
pymysql.install_as_MySQLdb()
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'py1712_shopping',
'USER': 'root',
'PASSWORD': 'root',
}
}
數(shù)據(jù)庫(kù)同步命令
python manage.py makemigrations 生成SQL語(yǔ)句
python manage.py migrate 寫(xiě)入數(shù)據(jù)庫(kù)
管理子項(xiàng)目靜態(tài)文件的模塊
settings.py
INSTALLED_APPS = ['子項(xiàng)目名稱']
路由訪問(wèn)端口你操作
settings.py
ALLOWED_HOSTS = [ '*' ]
啟動(dòng)項(xiàng)目:python manage.py runserver0.0.0.0:8000
0.0.0.0:可以匹配任何IP端口
對(duì)根項(xiàng)目下的static文件夾管理
settings.py
STATICFILES_DIRS = [
BASE_DIR + '/static/'
]