常用值
语法 | 作用 |
---|---|
request.method | 返回请求方法(GET、POST) |
request.GET | 获取该次GET方法 取参数 |
request.POST | 获取该次POST方法 取参数 |
request.path_info | 只取路径 例:127.0.0.1/index/?a=1&b=2 取结果=/index/ 不含域名和参数 |
request.body | 请求体 收到的整体信息(不咋用) |
request-常用方法
语法 | 作用 |
---|---|
request.get_full_path() | 取访问路径加信息(含访问信息)例如:"/music/bands/the_beatles/?print=true" |
request.is_ajax() | 如果请求是通过XMLHttpRequest 发起的,则返回True |
上传文件案例
enctype参数
:提交数据包内容格式:默认 参数=值&参数=值
文件形式传输:”multipart/form-data”
HTML
<!--上传文件必须带有:enctype="multipart/form-data" 来指定post是传文件-->
<form action="/upload/" method="post" enctype="multipart/form-data">
<input type="file" name="upload_file">
<!--可以传多文件,post时会计较以dict字典形式储存的文件对象-->
<input type="file" name="upload_file2">
<input type="submit" value="开始上传">
</form>
views
class Upload(View):
"""
保存上传文件前,数据需要存放在某个位置。默认当上传文件小于2.5M时,django会将上传文件的全部内容读进内存。从内存读取一次,写磁盘一次。
但当上传文件很大时,django会把上传文件写到临时文件中,然后存放到系统临时文件夹中。
:param request:
:return:
"""
def post(self,request):
# 从请求的FILES中获取上传文件的文件名,file为页面上type=files类型input的name属性值
filename = request.FILES["upload_file"].name # 字典形式储存
# 在项目目录下新建一个文件
with open(filename, "wb") as f:
# 从上传的文件对象中一点一点读
for chunk in request.FILES["upload_file"].chunks(): # 固定封装的方法
# 写入本地文件
f.write(chunk)
return HttpResponse("上传OK")
Response 三件套
模块 | 作用 |
---|---|
HttpResponse | 返回字符串内容 |
render | 返回一个html页面 |
redirect | 返回一个重定向(告诉浏览器再去访问另外的网址) |
JsonResponse | HttpResponse的子类,专门用来生成JSON编码的响应 |
JsonResponse实例
from django.http import JsonResponse # 导入模块
response = JsonResponse({'foo': 'bar'})
print(response.content)
b'{"foo": "bar"}'
非字典类型
# 默认只能传递字典类型,如果要传递非字典类型需要设置一下safe关键字参数。
response = JsonResponse([1, 2, 3], safe=False)
render()
locals() 将当前页面所有变量传入
return render(request, 'index.html', locals())
结合一个给定的模板和一个给定的上下文字典,并返回一个渲染后的 HttpResponse 对象。
参数:
request: 用于生成响应的请求对象。
template_name:要使用的模板的完整名称,可选的参数
context:添加到模板上下文的一个字典。默认是一个空字典。如果字典中的某个值是可调用的,视图将在渲染模板之前调用它。
content_type:生成的文档要使用的MIME类型。默认为 DEFAULT_CONTENT_TYPE 设置的值。默认为’text/html’
status:响应的状态码。默认为200。
useing: 用于加载模板的模板引擎的名称。