目录
path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。
method:一个字符串,表示请求使用的HTTP方法,常用值包括:'GET'、'POST'。
encoding:一个字符串,表示提交的数据的编码方式。
如果为None则表示使用浏览器的默认设置,一般为utf-8。
这个属性是可写的,可以通过修改它来修改访问表单数据使用的编码,接下来对属性的任何访问将使用新的encoding值。
get:QueryDict类型对象,类似于字典,包含get请求方式的所有参数。
post:QueryDict类型对象,类似于字典,包含post请求方式的所有参数。
files:一个类似于字典的对象,包含所有的上传文件。
cookie:一个标准的Python字典,包含所有的cookie,键和值都为字符串。
session:一个既可读又可写的类似于字典的对象,表示当前的会话,只有当Django 启用会话的支持时才可用,详细内容见"状态保持"。
分组,18 188
http://127.0.0.1:8000/18/188/位置参数
应用中urls.py
url(r'^(\d+)/(\d+)/$', views.index),
视图中函数: 参数的位置不能错
- def index(request, value1, value2):
- # 构造上下文
- context = {'v1':value1, 'v2':value2}
- return render(request, 'Book/index.html', context)
关键字参数
应用中urls.py
?P部分表示为这个参数定义的名称为value1可以是其它名称,起名要做到见名知意
url(r'^(?P\d+)/(?P\d+)/$' , views.index),
视图中函数: 参数的位置可以变,跟关键字保持一致即可
- def index(request, value2, value1):
- # 构造上下文
- context = {'v1':value1, 'v2':value2}
- return render(request, 'Book/index.html', context)
HttpRequest对象的属性GET、POST都是QueryDict类型的对象
与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况
方法get():根据键获取值
如果一个键同时拥有多个值将获取最后一个值
如果键不存在则返回None值,可以设置默认值进行后续处理
get('键',默认值)
方法getlist():根据键获取值,值以列表返回,可以获取指定键的所有值
如果键不存在则返回空列表[],可以设置默认值进行后续处理
getlist('键',默认值)
视图在接收请求并处理后,必须返回HttpResponse对象或子对象。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。
可以使用django.http.HttpResponse来构造响应对象。
HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
也可通过HttpResponse对象属性来设置响应体、响应体数据类型、状态码:
响应头可以直接将HttpResponse对象当做字典进行响应头键值对的设置:
- response = HttpResponse()
- response['itcast'] = 'Python' # 自定义响应头Itcast, 值为Python
示例:
- from django.http import HttpResponse
-
- def response(request):
- return HttpResponse('itcast python', status=400)
- 或者
- response = HttpResponse('itcast python')
- response.status_code = 400
- response['itcast'] = 'Python'
- return response
Django提供了一系列HttpResponse的子类,可以快速设置状态码
若要返回json数据,可以使用JsonResponse来构造响应对象,作用:
- from django.http import JsonResponse
-
- def response(request):
- return JsonResponse({'city': 'beijing', 'subject': 'python'})
- from django.shortcuts import redirect
-
- def response(request):
- return redirect('/get_header')