创建 Form 类时,最重要的部分是定义表单的字段。每个字段都有自定义验证逻辑,以及一些其他钩子。本文围绕可以在表单中使用的各种字段以及与 Django Forms 相关的各种功能和技术展开。表单基本上用于以某种方式从用户那里获取输入,并将该信息用于数据库的逻辑操作。例如,通过输入用户的姓名、电子邮件、密码等来注册用户。
Django 将 Django 表单中定义的字段映射到 HTML 输入字段。Django 处理表单中涉及的三个不同部分的工作:
准备和重组数据以使其准备好进行渲染
为数据创建 HTML 表单
接收和处理客户提交的表格和数据
请注意,由 Django 表单完成的所有类型的工作都可以使用高级 HTML 内容完成,但 Django 使它更容易和高效,尤其是验证部分。一旦你掌握了 Django 表单,你就会忘记 HTML 表单。
语法: Django Fields 像 Django Model Fields 一样工作,语法如下:
field_name = forms.FieldType(**options)
复制代码
例子:
from django import forms
# creating a formclass GeeksForm(forms.Form): title = forms.CharField() description = forms.CharField()
复制代码
使用 Django 表单
要使用 Django Forms,需要有一个项目和一个在其中工作的应用程序。启动应用程序后,您可以在 app/forms.py 中创建一个表单。在开始使用表单之前,让我们检查一下如何启动项目并实现 Django Forms。
创建 Django 表单
在 Django 中创建表单与创建模型完全相似,需要指定表单中存在哪些字段以及类型。例如,要输入注册表单,可能需要名字 (CharField)、卷号 (IntegerField) 等。
句法:
from django import forms class FormName(forms.Form): # 每个字段都将被映射为 HTML 中的输入字段 field_name = forms.Field(**options)
复制代码
创建表单,在 geeks/forms.py 中输入代码,
# import the standard Django Forms# from built-in libraryfrom django import forms
# creating a formclass InputForm(forms.Form):
first_name = forms.CharField(max_length = 200) last_name = forms.CharField(max_length = 200) roll_number = forms.IntegerField( help_text = "Enter 6 digit roll number" ) password = forms.CharField(widget = forms.PasswordInput())
复制代码
渲染 Django 表单
Django 表单字段有几种内置方法可以简化开发人员的工作,但有时需要手动实现一些东西来自定义用户界面(UI)。表单带有 3 个内置方法,可用于呈现 Django 表单字段。
{{ form.as_table }}会将它们呈现为包裹在 <tr> 标签中的表格单元格
{{ form.as_p }}会将它们呈现在 <p> 标签中
{{ form.as_ul }}会将它们呈现在 <li> 标签中
要将此表单呈现为视图,请移至 views.py 并创建一个 home_view,如下所示。
from django.shortcuts import renderfrom .forms import InputForm
# Create your views here.def home_view(request): context ={} context['form']= InputForm() return render(request, "home.html", context)
复制代码
在视图中,只需在 forms.py 中创建上面创建的表单类的一个实例。现在让我们编辑模板 > home.html
<form action = "" method = "post"> {% csrf_token %} {{form }} <input type="submit" value=Submit"></form>
复制代码
现在,访问http://localhost:8000/
从模型创建 Django 表单
Django ModelForm 是一个用于将模型直接转换为 Django 表单的类。如果您正在构建一个数据库驱动的应用程序,那么您很可能拥有与 Django 模型紧密映射的表单。现在,当我们准备好项目后,在 geeks/models.py 中创建一个模型,
# import the standard Django Model# from built-in libraryfrom django.db import models
# declare a new model with a name "GeeksModel"class GeeksModel(models.Model): # fields of the model title = models.CharField(max_length = 200) description = models.TextField() last_modified = models.DateTimeField(auto_now_add = True) img = models.ImageField(upload_to = "images/")
# renames the instances of the model # with their title name def __str__(self): return self.title
复制代码
要直接为此模型创建表单,请进入 geeks/forms.py 并输入以下代码:
# import form class from djangofrom django import forms
# import GeeksModel from models.pyfrom .models import GeeksModel
# create a ModelFormclass GeeksForm(forms.ModelForm): # specify the name of model to use class Meta: model = GeeksModel fields = "__all__"
复制代码
现在访问http://127.0.0.1:8000/,
评论