Django 构建模板 form 表单的两种方法

今天早睡
今天早睡
发布时间:2026-10-14| 6人浏览过
原创

本文介绍在 Django 中构建模板表单的两种核心方式:手动定义字段与基于数据表映射。通过具体代码示例,演示如何创建 forms.py 并在视图中传递给模板,实现从基础 Form 到 ModelForm 的灵活应用,帮助开发者快速掌握 Django 表单处理机制。

在常规开发场景中,若需手动构建一张表单,通常会在模板文件 login.html 中直接编写 HTML 代码。


<form action="/your-name/" method="post">
 <label for="your_name">Your name: </label>
 <input id="your_name" type="text" name="your_name" value="{{ current_name }}">
 <input type="submit" value="OK">
</form>

Django 表单生成的两种实现路径

接下来,我们将探讨在 Django 框架下,如何在模板文件中生成 form 表单的具体实现方案。

第一种方案:自定义显示字段。

假设我们需要在模板中生成一张包含 username 和 content 两个字段的表单。

方案一:自定义显示字段

首先,在应用目录下新建 forms.py 文件(路径示例:/users/forms.py)。


from django import forms

class MessageGetForm(forms.Form):
 username = forms.CharField(label='用户', max_length=5) #max_length 浏览器限制用户输入的字符串长度
 content = forms.CharField(label='留言', max_length=100)

随后,在视图文件中引用上述表单类,并将其传递给模板(路径示例:users/view.py)。


from apps.users.forms import MessageGetForm

class MessageView(View):
 def get(self, request, *args, **kwargs):
  message = MessageGetForm()

  return render(request, "message.html", {"message": message})

最后,在模板文件 message.html 中调用该表单对象。


<form action="" method="get"> 
 {{ message }}
</form>

渲染后的页面效果如图所示。

第二种方案:将数据表的字段映射到模板文件 form 表单。

假设数据表 courses_lesson 的字段结构如下。

方案二:数据表字段映射

同样,在应用目录下新建 forms.py 文件(路径示例:/users/forms.py)。


#此处我们假设你的项目文件courses/models.py内含有Lesson类from apps.courses.models import Lesson
from django.forms import ModelForm

class CoursesLessonForm(ModelForm):
 class Meta:
  model = Lesson
  fields = ['add_time', 'name', 'learn_times'] #要显示的字段

在视图文件中引用上述表单字段,并将其传递给模板(路径示例:users/view.py)。


from apps.users.forms import CoursesLessonForm

class MessageView(View):
 def get(self, request, *args, **kwargs):
  message = CoursesLessonForm()

  return render(request, "message.html", {"message": message})

在模板文件 message.html 中进行调用。


<form action="" method="get">
 {{ message }}
</form>

页面渲染效果如图所示。

所有表单类均作为 django.forms.Form 或者 django.forms.ModelForm 的子类来创建。您可以把 ModelForm 想象成 Form 的子类。实际上 Form 和 ModelForm 从(私有) BaseForm 类继承了通用功能,但是这个实现细节不怎么重要。

到此这篇关于 Django 构建模板 form 表单的两种方法的文章就介绍到这了,更多相关 Django 构建模板 form 表单的两种方法内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。