django表单(2)

HTTP 请求

HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。

Get方法

  • 我们在之前的项目中创建一个 search.py 文件,用于接收用户的请求:
# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render_to_response
# 表单
def search_form(request):
    return render_to_response('search_form.html')
# 接收请求数据
def search(request):  
    request.encoding='utf-8'
    if 'q' in request.GET:   #注意此处 GET 是全大写
        message = '你搜索的内容为: ' + request.GET['q']
    else:
        message = '你提交了空表单'
    return HttpResponse(message)```
- 在模板目录 templates 中添加 search_form.html 表单:
```javascript



    
    表单


    
``` - urls.py 规则添加如下: ` url(r'^search$', search.search), url(r'^search-post$', search2.search_post),` - 运行结果如下: ![](http://upload-images.jianshu.io/upload_images/2326415-f1cb381f0260fd6a.gif?imageMogr2/auto-orient/strip) ###POST方法 上面我们使用了GET方法。视图显示和请求处理分成两个函数处理。 提交数据时更常用POST方法。我们下面使用该方法,并用一个URL和处理函数,同时显示视图和处理请求。 - 我们在tmplates 创建 post.html: ```javascript 菜鸟教程(runoob.com)
{% csrf_token %}

{{ rlt }}

``` 在模板的末尾,我们增加一个 rlt 记号,为表格处理结果预留位置。 表格后面还有一个{% csrf_token %}的标签。csrf 全称是 Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能。POST 方法提交的表格,必须有此标签。 - 在目录下新建 search2.py 文件并使用 search_post 函数来处理 POST 请求: ```javascript # -*- coding: utf-8 -*- from django.shortcuts import render from django.views.decorators import csrf def search_post(request): contxt = {} if request.POST: contxt['rlt'] = request.POST['q'] return render(request,'post.html',contxt)``` - urls.py 规则添加如下: `url(r'^search-post$', search2.search_post),` - 我们来看一下效果: ![](http://upload-images.jianshu.io/upload_images/2326415-3a4c1b1ea5efb2f4.gif?imageMogr2/auto-orient/strip) 完成以上实例看看我们的文件结构: **blogfqy** | - - blog   | - - migrations     | - - 0001_initial.py     | - - \__init__.py   | - - templates     | - - hello.htnl     | - - index.html   | - - \__init__.py   | - - admin.py   | - - apps.py   | - - models.py   | - - tests.py   | - - views.py | - - blogfqy   | - - \__init__.py   | - - search.py   | - - search2.py   | - - settings.py   | - - urs.py   | - -testdb.py   | - -wsgi.py | - - templates   | - - post.html   | - - search_form.html | - - db.sqlite3 | - - manage.py -- 本文摘录自[【菜鸟教程】](http://www.runoob.com/django/django-form.html),为了增加印象和理解django框架,代码和树结构均为手打,望读者朋友不可只是看看或者复制粘贴,这样不助于学习。

你可能感兴趣的:(django表单(2))