这是一个用于通过使用模型创建HTML表单的类。这是一种无需编写HTML代码即可创建表单的有效方法。
Django会自动为我们完成此任务, 以减少应用程序开发时间。例如, 假设我们有一个包含各种字段的模型, 则无需在表单文件中重复这些字段。
因此, Django提供了一个帮助器类, 该类允许我们从Django模型创建Form类。
让我们来看一个例子。
Django ModelForm示例
首先, 创建一个包含字段名称和其他元数据的模型。它可以用来创建数据库和动态HTML格式的表。
// model.py
from __future__ import unicode_literalsfrom django.db import modelsclass Student(models.Model):first_name = models.CharField(max_length=20)last_name= models.CharField(max_length=30)class Meta:db_table = "student"
该文件包含一个继承ModelForm的类, 并提及为其创建HTML表单的模型名称。
// form.py
from django import formsfrom myapp.models import Studentclass EmpForm(forms.ModelForm):class Meta:model = Studentfields = "__all__"
编写一个视图函数以从Forms.py加载ModelForm。
//views.py
from django.shortcuts import renderfrom myapp.form import StuFormdef index(request):stu = StuForm()return render(request, "index.html", {'form':stu})
//urls.py
from django.contrib import adminfrom django.urls import pathfrom myapp import viewsurlpatterns = [path('admin/', admin.site.urls), path('index/', views.index), ]
【Django模型表单】最后, 创建一个包含以下代码的index.html文件。
<
!DOCTYPE html>
<
html lang="en">
<
head>
<
meta charset="UTF-8">
<
title>
Index<
/title>
<
/head>
<
body>
<
form method="POST" class="post-form">
{% csrf_token %}{{ form.as_p }}<
button type="submit" class="save btn btn-default">
Save<
/button>
<
/form>
<
/body>
<
/html>
运行服务器 使用python manage.py runserver命令运行服务器。
之后, 通过localhost:8000 / index URL访问模板, 它将向浏览器产生以下输出。
输出:
嗯, HTML表单是自动创建的。这是Django的功能。