根据上节的目录,在 myFirstDjango/
创建 search.py
并添加如下内容
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@author: JinWenChao
@file: search
@time: 2020/12/3 14:34
"""
from django.http import HttpResponse
from django.shortcuts import render
# 转发到 search_form.html 页面
def redirect_form(request):
return render(request, 'search_form.html')
# 接收get请求的表单数据
def search_get(request):
request.encoding = 'utf-8'
if 'value' in request.GET and request.GET['value']:
message = '你搜索的内容为: ' + request.GET['value']
else:
message = '你提交了空表单'
return HttpResponse(message)
在 myFirstDjango/urls.py
中添加如下内容
from django.urls import path
from django.conf.urls import url
from . import views, testdb, search
# 此项就是django的url配置
urlpatterns = [
path('TmplUseTag', views.TmplUseTag),
path('testdb', testdb.testdb),
# 使用正则表达式的校验方式校验URL,映射到 search.redirect_form
url(r'^redirect_form/$', search.redirect_form),
url(r'^search_get/$', search.search_get),
]
在 templates
文件下创建 search_form.html
并添加如下内容
<html lang="en">
<head>
<meta charset="UTF-8">
<title>GET请求提交表单title>
head>
<body>
{% comment %}
action : 表单提交地址
method : 提交方式为GET
{% endcomment %}
<form action="/search_get/" method="get">
<input type="text" name="value">
<input type="submit" value="搜索">
form>
body>
html>
启动服务,访问 http://localhost:8080/redirect_form/
会给你返回 search_form.html
页面
在 myFirstDjango/search.py
中添加如下内容
# 接收POST请求数据
def search_post(request):
"""
接收到请求数据后,判断当前请求是POST的话
直接返回 search_post.html 页面,并且传参数 result
:param request:
:return:
"""
result = {
}
if request.POST:
result['result'] = request.POST['value']
return render(request, "search_post.html", result)
在 myFirstDjango/urls.py
中添加如下内容
from django.urls import path
from django.conf.urls import url
from . import views, testdb, search
# 此项就是django的url配置
urlpatterns = [
path('TmplUseTag', views.TmplUseTag),
path('testdb', testdb.testdb),
# 使用正则表达式的校验方式校验URL,映射到 search.redirect_form
url(r'^redirect_form/$', search.redirect_form),
# get请求视图
url(r'^search_get/$', search.search_get),
# post请求视图
url(r'^search-post/$', search.search_post)
]
在 templates
文件下创建 search_post.html
并添加如下内容
<html lang="en">
<head>
<meta charset="UTF-8">
<title>POST提交表单结果title>
head>
<body>
<form action="/search-post/" method="post">
{% csrf_token %}
<input type="text" name="value">
<input type="submit" value="搜索">
form>
{% comment %}
点击搜索后,搜索内容会回显到下方的P标签
{% endcomment %}
<p>搜索: {
{ result }}p>
body>
html>
启动服务,访问 http://localhost:8080/search-post/
会给你返回 search_post.html
页面
输入框中输入内容,回显到下方P标签中
每个视图函数的第一个参数是一个 HttpRequest 对象,就像下面这个 search_post() 函数
def search_post(request):
result = {
}
if request.POST:
result['result'] = request.POST['value']
return render(request, "search_post.html", result)
借鉴 https://www.runoob.com/django/django-form.html