根据控制台的提示将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。



