您的位置:首页 > 编程语言 > Go语言

Django基础入门06

2018-04-03 19:08 489 查看
笔记参考Django菜鸟教程
Day06 Django表单
  HTML表单是网站交互性的经典方式。
  本次内容学习Django如何对用户提交的表单数据进行处理。
1.     HTTP请求     
HTTP协议以“请求-回复”的方式工作
2.     GET方法
在模板目录templates中添加search_form.html表单:
<!DOCTYPE html><html>
<head>
<meta charset=”utf-8”>
</head>
<body>
        <formaction=”/search”  method=”get”>
          <inputtype=”text”  name=”q”>
          <inputtype=”submit” value=”搜索”>
</form>
</body>
</html>
我们在之前的项目中创建一个search.py文件,用于接收用户的请求:
# -*-coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render_to_response
#表单
def search_form(request):
    returnrender_to_respoonse(‘search_form.html’)
#接受请求数据
def search(request):
        request.enconding=’utf-8’
     if ‘q’ inrequest.GET:
               message=’你搜索的内容为:’+request.GET[‘q’]
     else:
               message=你提交了空表单’
     return HttpResponse(message)
 
修改urls.py如下:
from django.conf urls import url
from .import view,testdb,search
 urlpatterns=[
url(r’^hello$’,view.hello),
url(r’^testdb$’,testdb.testdb),
url(r’^search-form$’,search.search-form),
 url(r’^search$’, search.search),
]
访问地址 http://127.0.0.1:8000/search-form 并搜索,结果如下所示



3.post方法
上面我们使用的是GET方法。视图显示和请求处理分成两个函数处理。
提交数据的时候更常用的是POST方法。
接下来我们使用该方法,并用一个URL和处理函数,同时显示视图和处理请求。
我们在tmplate中创建post.html,代码如下
<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
    <form action="/search-post"method="post">
        {% csrf_token %} 
 < !—这是Django提供的防止伪装提交请求的功能POST 方法提交的表格,必须有此标签 -->
        <input type="text"name="q">
        <input type="submit"value="Submit">
    </form>
    <p>{{ rlt }}</p>  <!--为表格处理结果预留位置-->
</body>
</html>
接下来我们在HelloWorld目录下新建search2.py文件并使用search_post函数处理POST请求。代码如下:
# -*-coding: utf-8 -*-
fromdjango.shortcuts import render
fromdjango.views.decorators import csrf
 # 接收POST请求数据
defsearch_post(request):
    ctx ={}
    if request.POST:
        ctx['rlt'] = request.POST['q']
    return render(request,"post.html", ctx)
接下来修改urls.py如下
fromdjango.conf.urls import url
from .import view,testdb,search,search2
 urlpatterns = [
    url(r'^hello$', view.hello),
    url(r'^testdb$', testdb.testdb),
    url(r'^search-form$', search.search_form),
    url(r'^search$', search.search),
    url(r'^search-post$', search2.search_post),
]
然后访问http://127.0.0.1:8000/search-post显示如下结果:



4.Request对象
每个view函数的第一个参数是HttpRequest对象,就像下边这个hello( ) 函数:from django.http import HttpResponse

 def hello(request):

    return HttpResponse("Hello world")
 HttpRequest对象包含当前请求URL的一些信息:
    path:请求页面的全路径,不包含域名,例如。“/hello/”
    method:请求中使用的HTTP方法的字符串表示。
    GET:包含所有HTTP GET参数的类字典对象。
    POST:包含所有HTTPPOST参数的类字典对象。
    REQUEST:POST和GET属性的集合,一般不使用。

    COOKIES:包含所有cookies的标准Python字典对象。
    FIELS:包含所有上传文件的类字典对象。
    META:包含所有可用HTTP头部信息的字典。
    user:是一个django.contrib.auth.models.User对象,代表当前登录的用户。
    session:唯一可读写的属性,代表当前会话的字典对象。
    raw_post_data:原始HTTPPOST数据,未解析过。
 
    Request对象也有一些有用的方法:
    _getitem_(key):返回GET/POST的键值,先取POST后取GET,如果键不存在抛出 KeyError。
    has_key() :检查request.GETor request.POST中是否包含参数指定的Key。   
    get_full_path():返回包含查询字符串的请求路径。
    is_secure():如果请求是安全的,返回True,就是说,发出的是HTTPS请求。
 
4.QueryDict对象
在HttpRequest对象中,GET和POST属性是django.http.QueryDict类的实例。
QueryDict类似字典的自定义类,用来处理单键对应多值的情况。
QueryDict实现所有标准的词典方法。还包括一些特有的方法:参照 http://www.runoob.com/django/django-form.html  

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: