标签:多个 image jpeg json for ons 求和 shortcut request
视图函数,接受Web请求并且返回Web响应(必须返回响应)
响应可以是一张网页的HTML内容,一个重定向,一个404错误
from django.shortcuts import render, HttpResponse,redirect def current_datetime(request): html = "<html><body>你好</body></html>" return HttpResponse(html)
每个视图函数都需要接收请求和返回响应,使用HttpRequest对象作为第一个参数,
并且通常称之为request。每个视图函数都负责返回一个HttpResponse对象,其中包含生成的响应
django将请求报文中的请求行、首部信息、内容主体封装成 HttpRequest类中的属性
值为一个字符串,"GET"、"POST",必须使用大写
对请求方法进行判断if request.method=="POST":pass
值为QueryDict对象,类似于字典,包含HTTP GET的所有参数
如:127.0.0.1:8000/edit_book/?id=1&name=yimi request.GET --> {"id":1, "name":"yimi"} request.GET.get("id") #1
1.POST请求可以带有空的POST字典,如果通过POST发送一个表单,但是表单中没有任何的数据,
QueryDict 对象依然会被创建。
2.如果使用POST上传文件的话,文件信息将包含在FILES属性中
request.FIlES.get(‘upload_file‘)
3.键值对的值是多个的时候,比如checkbox类型的input标签,select标签
需要用request.POST.getlist("hobby")
获取用户请求的路径(不包含IP和端口和URL参数) 在网页上输入http://127.0.0.1:8000/t_test/ print(request.path_info) 结果:/t_test/
在网页上输入http://127.0.0.1:8000/t_test/ print(request.get_full_path()) 结果:/t_test/ 在网页上输入http://127.0.0.1:8000/t_test/?page=5 print(request.get_full_path()) 结果:/t_test/?page=5
一个类似于字典的对象,包含所有的上传文件信息。
print(request.FILES) #{‘upload_file‘: [<InMemoryUploadedFile: 0020033025290064_b.jpg (image/jpeg)>]}> file_obj=request.FIlES.get(‘upload_file‘)
在使用form表单提交文件时,表单中必须带有enctype="multipart/form-data
否则FILES将为一个空的QueryDict
‘‘‘ urls文件 from django.conf.urls import url from app import views url(r‘^upload/‘, views.upload), html文件 enctype必须要写 form中的input必须有name属性,且注意csrf阻拦 <form action="/upload/,method="post",enctype="multipart/form-data> {% csrf_token %} < input type = "file" name = "upload_file" > < input type = "submit" value = "开始上传" > </form> views文件 from django.shortcuts import HttpResponse,render,redirect def upload(request): if request.method=="POST": file为页面上type = files类型input的name属性值 print(request.FILES) #{‘upload_file‘: [<InMemoryUploadedFile: 0020033025290064_b.jpg (image/jpeg)>]}> file_obj=request.FIlES.get(‘upload_file‘) filename=file_obj.name with open(filename,"wb") as f: # 从上传的文件对象中一点一点读 for chunk in request.FILES[‘file‘].chunks(): f.write(chunk) ##从上传的文件对象中一行一行 for line in file_obj: f.write(line) return HttpResponse("上传成功") return render(request,"upload.html") ‘‘‘
1. HttpResponse --> 返回字符串内容
2. render --> 返回一个html页面
3. redirect --> 返回一个重定向(告诉浏览器再去访问另外的网址)
render方法是结合一个给定的模板和一个给定的上下文字典,将模板页面中的模板语法(在html中为{{}} {% %})
进行渲染,将渲染后的html页面作为响应体。响应的状态码。默认为200。
return render(request, ‘index.html‘, {‘name‘: ‘zhao‘})
redirect:传递要重定向的一个硬编码的URL
def login(request): return redirect("/login/")
也可传递一个完整的url
默认情况下,redirect() 返回一个临时重定向,响应状态码:302
redirect都接收一个permanent 参数;如果设置为True,将返回一个永久的重定向,响应状态码:301
return redirect("/login/", permanent=True)
A页面临时重定向到B页面,那搜索引擎收录的就是A页面。
A页面永久重定向到B页面,那搜索引擎收录的就是B页面。
301和302状态码都表示重定向,浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,
(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)
不同处:
301表示旧地址A的资源已经被永久地移除了,搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;
302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,
搜索引擎会抓取新的内容而保存旧的网址。
(1)网站调整(如改变网页目录结构); (2)网页被移到一个新地址; (3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。 如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息
def t_test(request): li=[1,2,3] dic={"k1":jerd,"k2":"dandan"} import json str_li=json.dumps(li) str_dic = json.dumps(dic) return HttpResponse(str_li,str_dic) #只能返回一个字符串。显示不出来
from django.http import JsonResponse def t_test(request): dic={"k1":jerd,"k2":"dandan"} return JsonResponse(dic)
标签:多个 image jpeg json for ons 求和 shortcut request
原文地址:https://www.cnblogs.com/zgf-666/p/9221034.html