Django学习(二)

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值