Django学习(二)

来源:互联网 发布:蔬菜水果网络配送平台 编辑:程序博客网 时间:2024/06/11 17:05
Django学习(二)

表单的GET学习

一共至少需要创建或修改至少三个文件

  1. 自己的函数处理的Python文件

  2. 自己创建的表单html文件

  3. 修改本项目的urls.py文件

按照菜鸟教程上的代码,我的如下:

 
<html>
<head>
    <meta charset="utf-8" /> 
    <title>Search - w3cschool.cc</title>
</head>
<body>
    <form action="/search/" method="get">
        <input type="text" name="q">
        <button type="submit" value="Search">提交</button>
    </form>
</body>
</html>
 
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:
        message = '你搜索的内容为: ' + request.GET['q']
    else:
        message = '你提交了空表单'
    return HttpResponse(message)

注意:在接收数据后已经经过‘utf-8’编码了,那么在request.GET['q']上就不需要在按照utf-8编码了,这个在菜鸟教程上写错了。

 
from django.conf.urls import url
from HelloWorld.view import hello
from HelloWorld.testdb import testdb
from HelloWorld import search
urlpatterns = [
    url(r'^hello/$',hello),
    url(r'^testdb/$',testdb),
    url(r'^search-form/$',search.search_form),
    url(r'^search/$',search.search),
]

注意:我的第一行引用的模块也不一样,可能是我用的是Django1.10.2,太新了,教程上提供的,我一直报错。注意:r'^search-form/$'这个与在浏览器上的url相关,而不是后面的函数。

表单的POST学习

一共至少需要创建或修改至少三个文件

  1. 自己的函数处理的Python文件

  2. 自己创建的表单html文件

  3. 修改本项目的urls.py文件

按照菜鸟教程上的代码,我的如下:

 
<html>
<head>
    <meta charset="utf-8" /> 
    <title>Search - w3cschool.cc</title>
</head>
<body>
    <form action="/search-post/" method="post">
        <!-- 表单后面还有一个{% csrf_token %}的标签。csrf全称是Cross Site Request Forgery。这是Django提供的防止伪装提交请求的功能 -->
        {% csrf_token %}
        <input type="text" name="q">
        <input type="submit" value="Submit">
    </form>
    <!-- 增加一个rlt记号,为表格处理结果预留位置 -->
    <p>{{ rlt }}</p>
</body>
</html>
 
# -*- coding: utf-8 -*-
from django.shortcuts import render
from django.template.context_processors import csrf
# 接收POST请求数据
def search_post(request):
    ctx ={}
    ctx.update(csrf(request))
    if request.POST:
        print("=============")
        print(ctx)
        print("=============")
        ctx['rlt'] = request.POST['q']
        print("=============")
        print(ctx)
        print("=============")
    return render(request, "post.html", ctx)

注意:在1.10.2中django.template.context_processors,而不是django.core.context_processors。

 
from django.conf.urls import url
from HelloWorld.view import hello
from HelloWorld.testdb import testdb
from HelloWorld import search
from HelloWorld import search2
urlpatterns = [
    url(r'^hello/$',hello),
    url(r'^testdb/$',testdb),
    url(r'^search-form/$',search.search_form),
    url(r'^search/$',search.search),
    url(r'^search-post/$',search2.search_post),
]

为了查看部分结果,我加了点代码,结果如下:

 
0 0