表单:django对用户通过表单提交的数据进行访问,有效性检查,以及其他处理。
从Request对象中获取数据----->
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world")
view函数的第一个参数就是HttpResponse对象,代码里边的request变量,有一些属性方法:
request.path === 除了域名意外的请求路径,正斜杠开头 === “/hello/”
request.get_host === 主机名字 === “127.0.0.1:8000”
request.get_full_path() === 请求路径,可能包含查询字符串 === “/hello/?print=true”
request.META是一个字典,包含了所有本次HTTP请求的Header信息。
除了基本的元数据,还有 request.GET和request.POST 两个属性 包含了用户所提交的信息,POST数据是来之HTML中的form标签提交的,而GET数据可能来自<form>提交也可能是URL中的查询字符串(the query string)
简单的表单处理--->通常表单分为两个部分:前端HTML页面用户接口和后台view函数对所提交的数据的处理,简单建立一个搜索表单:
1 view文件 2 3 from django.shortcuts import render_to_response 4 5 def search_form(request): 6 return render_to_response('search_form.html')
urls文件 from books.views import search_form urlpatterns = patterns('' (r'^search-form/$', search_form),
#........ )
template文件 <html> <head> <title>Search</title> </head> <body> <form action="/search/" method="get"> <input type="text" name='q'> <input type="submit" value="Search"> </form> </body> </html>
然后我们添加第二个视图函数并且设置URL
1 # urls.py 2 3 urlpatterns = patterns('', 4 # ... 5 (r'^search-form/$', views.search_form), 6 (r'^search/$', views.search), 7 # ... 8 ) 9 10 # views.py 11 12 def search(request): 13 if 'q' in request.GET 14 massage = "You searched is %s" % request.GET['q'] 15 else 16 massage = "You submitted an empty form." 17 return HttpResponse(message)
过程是:在HTML里边我们定义了一个变量q,当表单提交的时候,变量的值通过GET附加在 URL /search/ 上。处理/search/的视图通过request.GET获取q的值。使用的GET方法是通过查询字符串的方式传递的(例如:/search/?q=django)我们可以使用request.GET来获取这些数据。当我们提交表单仅仅需要获取数据时候就使用GET;而但我们提交表单时需要更改服务器数据的状态,或者说发送email或者其他不仅仅是显示数据的时候用POST。
已经确认了用户提交的数据是有效的,接下来就是从数据库中查询这个有效的数据。