写点什么

Django 表单

  • 2022 年 7 月 02 日
  • 本文字数:1870 字

    阅读完需:约 6 分钟

创建 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/, 

发布于: 2022 年 07 月 02 日阅读数: 15
用户头像

公众号:海拥 2021.11.29 加入

【个人网站】haiyong.site 【联系方式】微信:wh18363 【软件技能】前端,Java,Python 【个人称号】InfoQ 写作社区签约作者,华为云享专家,CSDN原力作者,全栈领域优质创作者,掘金2021年度人气作者No.21

评论

发布
暂无评论
Django 表单_django_海拥(haiyong.site)_InfoQ写作社区