栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Django如何设置Cookies和Session

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django如何设置Cookies和Session

在文件settings.py中:

根据控制台的提示将DEBUG注解掉,然后ALLOWED_HOSTS配置允许一些IP访问服务器:

# SECURITY WARNING: don't run with debug turned on in production!
# DEBUG = True

ALLOWED_HOSTS = ['*']  # 允许访问的IP

再把跨域中间件注解掉(没Nginx想解决跨域问题需要在Spring中用了一个配置类,而这里只用一行):

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    # 'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XframeOptionsMiddleware',
]
增加有关配置
# redis session
SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS = {
    'host': '127.0.0.1',
    'port': 6379,
    'db': 0,
    'prefix': 'session',
    'socket_timeout': 10
}  # 用Redis来保存Session,这样可以看到存储具体情况而且方便管理
SESSION_cookie_NAME = 'index'
SESSION_cookie_PATH = '/'  # Session的cookie保存的路径
SESSION_cookie_DOMAIN = None  # cookies域名默认为无
SESSION_cookie_SECURE = False  # 不用Https传输cookies,是默认值
SESSION_cookie_HTTPonLY = True  # 默认Session的cookie只支持http传输
SESSION_cookie_AGE = 60*60*24*7  # 登录状态保留7天,以秒为单位
SESSION_EXPIRE_AT_BROWSER_CLOSE = False  # 关闭浏览器使得Session不过期
SESSION_SAVE_EVERY_REQUEST = False  # 不是每次请求都要保存Session
然后写一个接口:
from django.shortcuts import HttpResponse
from django.http import HttpRequest, JsonResponse
from django.views.decorators.http import require_http_methods
import json
import time


@require_http_methods(['POST'])  # 允许POST请求
def sign_in(request: HttpRequest, *args, **kwargs):
    body = json.loads(request.body)  # 之后要用JSON格式的请求体
    if 'name' in body:
        request.session['name'] = body['name']  # 设置Session
    response = JsonResponse({'val': True})  # 就是返回JSON格式的数据
    response.set_cookie('time', '%d' % (time.time()*1000))  # 设置一条cookie
    return response

并在url.py中配置之。

发送一个很普通的请求
import requests
import json


res = requests.post(
	url='http://localhost:8000/signIn/',  # 末尾的斜杠不要随便删
	data=json.dumps({'name': 'hello_ world'})
)
print(res.status_code, res.text, res.cookies)

得到结果:

200 {"val": true} , ]>

可以看到之前配置的名为index的cookie。
也可以看到之前设置的名为session的Session。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/446027.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号