每日一记======>Django笔记 2012.08.23

        表单: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。

       已经确认了用户提交的数据是有效的,接下来就是从数据库中查询这个有效的数据。

posted @ 2012-08-23 20:14  事件轮询,回不到过去  阅读(403)  评论(0编辑  收藏  举报