浏览器向服务器传参数,主要通过以下四种方式
视图函数定义方式
from django.shortcuts import render
from django.http import HttpResponse, JsonResponse
import json
# 1获取URL中的参数
def get_params(request, id, category):
print(id, category)
# 2获取查询字符串中的参数
fquery = request.GET.get('fquery')
sqquery = request.GET.get('squery')
print(fquery, squery)
return HttpResponse('OK')
# 3获取请求体参数
def post1(request):
# 接收表单数据
dict1 = request.POST
id = dict1.get('id')
categoty = dict1.get('category')
print(id, category)
return HttpResponse('接受表单数据成功')
def json1(request):
# 接受非表单数据
# 1.接受json数据,类型为Bytes
json_bytes = request.body
# 将字节转成字符串
json_str = json_bytes.decode()
# 将字符串转成字典
json_dict = json.loads(json_str)
title = json_dict.get('title')
address = json_dict['address']
print(title, address)
# return JsonResponse({'title':'hello'})
return JsonResponse('hello world', safe=False)
# 4获取请求头的参数
def cookie_test(request):
# cookie的读写操作
# 写
response = HttpResponse('ok')
# response.set_cookie('hello','django',max_age=60*60*24)
# 读
hello = request.COOKIES.get('hello')
print(request.COOKIES) # {'hello': 'django'}
print(hello)
return response
def session_test(request):
# session的读写操作
# 写
# request.session['name'] = 'wanger'
# 读
# print(request.session.get('name'))
# 删除某个键及值
# del request.session['name']
# 删除所有的键及值
request.session.clear()
# 删除整条数据 session唯一标识符也从redis中删除
request.session.flush()
return HttpResponse('成功')
JsonResponse是HttpResponse的子类,用来返回json数据,当返回的数据不是json类型时,需要指定参数safe=False
app/urls映射关系的定义
from django.conf.urls import url
from .import views
urlpatterns = [
# 获取url中的参数,未命名
# url('^(\d{4})/(\d{2})$', views.get_params),
# 获取url中的参数,参数命名
url(r'^(?P<id>\d{4})/(?P<category>\d{2})/$',views.get_params),
# 获取表单数据
url(r'^post1/$',views.post1),
# 获取非表单数据json
url(r'^json1/$',views.json1),
# 设置cookie和session缓存
url(r'^cookie/$',views.cookie_test),
url(r'^session$',views.session_test),
]