Django表单和视图(四)
Django表单和视图四表单主要用于对用户提交的数据http请求进行处理。视图用来接受 Web 请求并且返回 Web 响应一、GET请求此处模拟一个搜索的功能创建搜索表单 find_form.html!DOCTYPEhtmlhtmllangenheadmetacharsetUTF-8title搜索一下你就知道啥也搜不到/title/headbodyformaction/find/methodgeth1搜索一下你就知道啥也搜不到/h1inputtypetextnamekeywordsinputtypesubmitvalue搜索/form/body/html创建请求处理的视图 find.pyfromdjango.httpimportHttpResponsefromdjango.shortcutsimportrender# 返回表单页面deffind_form(request):returnrender(request,find_form.html)# 处理请求数据deffind(request):request.encodingutf-8ifkeywordsinrequest.GETandrequest.GET[keywords]:message你搜索的内容为: request.GET[keywords]else:message请提交搜索数据returnHttpResponse(message)GET是request的一个属性返回http的get请求的所有参数返回值是QueryDict类似于字典类型。GET属性的get()方法返回请求参数字典的key对应的值。返回的是字符串。POST属性也是类似的。fromdjango.httpimportHttpResponsefromdjango.shortcutsimportrender# 返回表单页面deffind_form(request):returnrender(request,find_form.html)deffind(request):request.encodingutf-8ifkeywordsinrequest.GETandrequest.GET[keywords]:message你搜索的内容为: request.GET.get(keywords)else:message请提交搜索数据returnHttpResponse(message)3.修改路由 urls.pyfromdjango.contribimportadminfromdjango.urlsimportpathfrom.importfind urlpatterns[path(find_form/,find.find_form,namefind_form),path(find/,find.find,namefind_result),]二、POST请求创建表单页面 find_form.html!DOCTYPEhtmlhtmllangenheadmetacharsetUTF-8title搜索一下你就知道啥也搜不到/title/headbodyformaction/find_post/methodpost{% csrf_token %}h1搜索一下你就知道啥也搜不到/h1inputtypetextnamekeywordsinputtypesubmitvalue搜索h1stylecolor:#1da1f2{{ result }}/h1/form/body/htmlbody/html注意post 请求必须有 {% csrf_token %} 防伪装其中 {{ result }}为post请求返回结果的预留值创建请求处理的视图 find_post.pyfromdjango.shortcutsimportrenderfromdjango.views.decoratorsimportcsrf# 接收POST请求数据deffind_post(request):res{}ifrequest.POST:res[result]request.POST[keywords]returnrender(request,find_form.html,res)修改路由 urls.pyfromdjango.contribimportadminfromdjango.urlsimportpathfrom.importfind_post urlpatterns[path(find_post/,find_post.find_post,namefind_form),]三、resuest类型补充参数说明使用方法body用来处理二进制图片等request.bodypath用于获取url的路径request.pathmethod用于获取请求方式GET、POSTrequest.method四、响应对象补充函数HttpResponse()返回文本参数为字符串HttpResponse(‘需要返回的文本’)render()返回文本第一个参数为 request第二个参数为页面名称第三个参数为字典键为页面参数名可选return render(request, “test.html”,{‘name’:‘张三’})redirect()重定向跳转新页面参数为页面路径redirect(“/welcome/”)render()和redirect()的区别维度render()redirect()作用渲染模板返回 HTML 页面返回 HTTP 重定向响应告诉浏览器去另一个 URL返回状态码200 OK301/302 (默认 302)URL 变化URL 保持不变URL 会变成重定向的目标地址数据传递通过 context 字典传递数据到模板通过 session/URL 参数传递适用场景正常页面展示表单提交后跳转、登录后跳转