Django学习(二)
表单的GET学习
一共至少需要创建或修改至少三个文件
-
自己的函数处理的Python文件
-
自己创建的表单html文件
-
修改本项目的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学习
一共至少需要创建或修改至少三个文件
-
自己的函数处理的Python文件
-
自己创建的表单html文件
-
修改本项目的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),
]
为了查看部分结果,我加了点代码,结果如下: