背景
前后端分离的页面结构中,不设置准许跨域的话,前端是无法进行跨域请求的。
局部跨域设置
vim views.py
# 局部csrs
from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def list_all_2(request):
if request.method == "POST":
req = simplejson.loads(request.body)
user_id = req["params"]['id']
# print(user_id)
Choice.objects.get(id=user_id).delete()
return HttpResponse("删除数据成功.....")
# 获取所有的数据对象,必须要接value,不然无法返回json数据
queryset = Choice.objects.all().values('id','choice_text','votes')
# 将数据序列化成json格式,date类型的数据不能直接系列化 ensure_ascii=False 修改乱码的现象
ret = json.dumps(list(queryset),ensure_ascii=False)
return HttpResponse(ret)
## 用户登录,接受前端传过来的所有参数
@csrf_exempt
def login(request):
res_data = {"status":"sucess"}
obj = HttpResponse(json.dumps(res_data))
obj['Access-Control-Allow-Origin']='*'
xx= str(request.body,encoding="utf-8")
print(xx)
return obj
全局跨域设置
# 安装依赖
pip3 install django-cors-headers
修改settings.py
INSTALLED_APPS = [
......
'corsheaders', # 新添加
......
]
MIDDLEWARE = [
......
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
......
]
CORS_ORIGIN_ALLOW_ALL = True
CORS_ALLOW_CREDENTIALS = True