显示表单,我们需要用到html的知识,此时传统做法是将表单定义在html中,python中通过render函数进行渲染
建立一个和app同级的文件夹templates,用于存放html文件。假设我们要建立这样的一个表单

首先url = 'app1/name', 下面表单的设置应该放在html中,所以
Step1: 创建表单的html文件, 命名为name.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/app1/get_name" method="post">
<label for="你的名字">你的名字:</label>
<input type="text" id = 'first_name' name="first_name " maxlength="20" required>
<label for="你的姓氏">你的姓氏:</label>
<input type="text" id = 'last_name' name="last_name " maxlength="20" required>
</form>
</body>
</html>
step2: 设置url, 和url调用的函数get_name
from django.urls import re_path
from django.urls import path
from app1 import views as app1_views
# urlpatterns = [path('articles/[0-9]{4}', app1_views.articles)]
urlpatterns = [
path('get_name', app1_views.get_name),
]
Step3: 通过app1.views文件中的get_name函数将html和url连接起来
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def get_name(request):
return render(request, 'name.html')
Step4:设置程序查找name.html的路径 -- settings.py中‘DIRS’ 添加 BASE_DIR + ‘templates’路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR+'/templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
Django中另一种方式来显示表单 - forms模块
Step1:建立form.py文件,在文件中存储所有表单,这些表单等同于html中定义的表单
from django import forms
class PersonForm(forms.Form):
first_name = forms.CharField(label='你的名字:', max_length=20)
last_name = forms.CharField(label='你的姓氏', max_length=20)
Step2: 在函数中调用form文件
from django.shortcuts import render
from django.http import HttpResponse
from app1.form import PersonForm
def get_name(request):
return render(request, 'name.html', {'form': PersonForm()})
Step3: 建立name.html 和 表单form.py之间的关联 -- {{form}} 和上述函数中字典的key值相同
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/app2/get_name" method="post">
<!-- <label for="你的名字">你的名字:</label>-->
<!-- <input type="text" id = 'first_name' name="first_name " maxlength="20" required>-->
<!-- <label for="你的姓氏">你的姓氏:</label>-->
<!-- <input type="text" id = 'last_name' name="last_name " maxlength="20" required>-->
{{form}}
</form>
</body>
</html>
本文介绍了如何在Django中显示表单。通过创建与app同级的templates文件夹存放HTML,设置URL,编写视图函数,并在settings.py中配置模板路径,实现了传统方式下HTML表单的展示。此外,还讲解了使用forms模块创建form.py文件,调用表单并在HTML中通过{{form}}与视图函数关联的方法。
1578

被折叠的 条评论
为什么被折叠?



