Django表单
HTTP 请求方式
HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。
Django中使用表单
GET 方法
我们在之前的项目中创建一个test.py 文件,用于接收用户的请求:
/untitled2/untitled2/test.py 文件代码:
# -*- coding: utf-8 -*- from django.http import HttpResponse from django.shortcuts import render # 表单页面测试 def testForm(request): return render(request,'form.html') # 接收请求数据 def testForm1(request): request.encoding='utf-8' if 'testf' in request.GET and request.GET['testf']: message = '你搜索的内容为: ' + request.GET['testf'] else: message = '你提交了空表单' return HttpResponse(message)
urls.py文件
url(r'^testForm$',test.testForm),#表单测试 url(r'^testForm1$',test.testForm1),#表单请求测试
from.html文件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>表单请求</title> </head> <body> <form action="/test/" method="get"> <input type="text" name="testf"> <input type="submit" value="搜索"> </form> </body> </html>
访问:http://127.0.0.1:8000/testForm
运行结果
POST 方法
上面我们使用了GET方法。视图显示和请求处理分成两个函数处理。但是GET方法一般不安全。
因此提交数据时更常用POST方法。我们下面使用该方法,并用一个URL和处理函数,同时显示视图和处理请求。
在templates中创建testPost.html文件,注意加{% csrf_token %}<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Post测试</title> </head> <body> <form action="/testpost" method="post"> {% csrf_token %} <input type="text" name="testp"> <input type="submit" value="搜索"> </form> <p>{{ context }}</p> </body> </html>
建立test2.py文件
# -*- coding: utf-8 -*- from django.shortcuts import render from django.views.decorators import csrf # 接收POST请求数据 def testPost(request): result = {} if request.POST: result['context'] = request.POST['testp'] return render(request, "testPost.html", result)
在urls.py文件添加以下代码
url(r'^testpost$', test2.testPost),#表单请求测试
访问:http://127.0.0.1:8000/testpost
运行结果
参考文章:菜鸟教程