Django操作cookie、Django操作session、Django中的Session配置、CBV添加装饰器、中间件、csrf跨站请求
由于您的问题包含多个方面,我将逐一解答。
- Django操作Cookie
在Django中,可以通过HttpRequest.COOKIES
字典来访问cookie,并通过HttpResponse.set_cookie
和HttpResponse.delete_cookie
方法来设置和删除cookie。
# 设置cookie
def set_cookie(request):
response = HttpResponse('Cookie is set.')
response.set_cookie('my_cookie', 'cookie_value')
return response
# 获取cookie
def get_cookie(request):
cookie_value = request.COOKIES.get('my_cookie', 'default_value')
return HttpResponse(f'The value of my_cookie is: {cookie_value}')
# 删除cookie
def delete_cookie(request):
response = HttpResponse('Cookie is deleted.')
response.delete_cookie('my_cookie')
return response
- Django操作Session
在Django中,可以通过HttpRequest.session
字典来访问session,并且可以设置和删除session。
# 设置session
def set_session(request):
request.session['my_session'] = 'session_value'
return HttpResponse('Session is set.')
# 获取session
def get_session(request):
session_value = request.session.get('my_session', 'default_value')
return HttpResponse(f'The value of my_session is: {session_value}')
# 删除session
def delete_session(request):
if 'my_session' in request.session:
del request.session['my_session']
return HttpResponse('Session is deleted.')
# 清空所有session
def clear_session(request):
request.session.clear()
return HttpResponse('All sessions are cleared.')
# 删除session并删除cookie
def delete_session_and_cookie(request):
request.session.flush() # 删除session并删除session的cookie
return HttpResponse('Session is deleted and cookie is cleared.')
- Django中Session的配置
在settings.py
文件中,可以配置Session相关的参数,如session存储机制、session保存时间等。
# Session配置示例
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎
SESSION_COOKIE_NAME = 'my_sessionid' # Session的cookie保存在浏览器上时的key
SESSION_COOKIE_PATH = '/' # Session Cookie的有效路径
SESSION_COOKIE_DOMAIN = None # Session Cookie的有效域
SESSION_COOKIE_SECURE = False # 是否仅通过安全的https协议传输Session Cookie
SESSION_COOKIE_HTTPONLY = True # 是否使Session Cookie只能通过http协议访问
SESSION_COOKIE_AGE = 1209600 # Session Cookie的有效期,单位是秒
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否在用户关闭浏览器时删除session
SESSION_SAVE_EVERY_REQUEST = False # 是否在每次请求时保存session
- CBV添加装饰器
在Django中,可以通过装饰器来给类视图添加额外的功能。
from django.utils.decorators import method_decorator
from django.views import View
from django.contrib.auth.decorators imp
评论已关闭