当前位置:首页> 行业快讯 >

python-Django-表单基础概念|全球球精选

时间:2023-04-24 15:15:40    来源:腾讯云

简介

表单是Web应用程序中最常用的组件之一,它允许用户提交数据并与Web应用程序交互。在Django中,表单是由Django表单框架处理的,它允许您轻松地创建HTML表单并处理表单数据。

定义表单类

在Django中,表单类是定义表单字段和验证规则的Python类。每个表单字段都映射到一个HTML表单元素,并具有相应的验证规则。

表单类继承自django.forms.Form类,并定义一个或多个表单字段。每个表单字段都是一个Field类的实例,它定义了字段的类型、标签、验证规则等。


(资料图片)

以下是一个简单的表单类示例:

from django import formsclass ContactForm(forms.Form):    name = forms.CharField(max_length=100)    email = forms.EmailField()    message = forms.CharField(widget=forms.Textarea)

在这个示例中,我们定义了一个名为ContactForm的表单类,它包含三个字段:name、email和message。name字段是CharField类型,email字段是EmailField类型,message字段是CharField类型,但使用了Textarea小部件来显示多行文本。

在模板中显示表单

要在模板中显示表单,您需要将表单类实例化,并将其传递到模板上下文中。然后,在模板中使用Django模板语言(DTL)来呈现表单字段。

以下是一个简单的模板示例,它显示上面定义的ContactForm:

{% csrf_token %} {{ form.as_p }}

在这个示例中,我们使用form.as_p标记来呈现表单字段。as_p标记以HTML段落(

)的形式显示表单字段,每个字段都有一个标签和一个表单元素。

还需要注意的是,我们在表单中包含了一个csrf_token标记。这是Django防止跨站请求伪造(CSRF)攻击的一种机制,它生成一个隐藏的表单字段,其中包含一个随机的令牌值。在处理表单提交时,Django将检查令牌是否有效。

处理表单数据

在Django中,表单数据是由视图函数处理的。当用户提交表单时,Django将请求发送到视图函数,并将表单数据作为POST请求参数传递给函数。

以下是一个处理表单数据的简单视图函数示例:

from django.shortcuts import renderfrom django.http import HttpResponseRedirectfrom .forms import ContactFormdef contact(request):    if request.method == "POST":        form = ContactForm(request.POST)        if form.is_valid():            name = form.cleaned_data["name"]            email = form.cleaned_data["email"]            message = form.cleaned_data["message"]            # 处理表单数据            return HttpResponseRedirect("/thanks/")    else:        form = ContactForm()    return render(request, "contact.html", {"form": form})

在这个示例中,我们首先检查请求的HTTP方法是否为POST。如果是POST,我们使用提交的数据初始化表单类,并检查表单数据是否有效。如果表单数据有效,则从表单中提取数据并进行相应的处理。最后,我们将用户重定向到一个“感谢”页面。

如果请求的HTTP方法不是POST,则说明这是第一次请求该页面,我们将表单类实例化,并将其传递到渲染模板的上下文中。

标签:

上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营

  上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会,上海市副市

2022-05-16

上海:6月1日至中下旬全面恢复正常生产生活秩序

  上海下一步防控分为三个阶段,6月1日至中下旬全面恢复正常生产生活秩序  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会

2022-05-16

瞒着父母当志愿者 她在救援车上完成毕业答辩

  她在救援车上完成毕业答辩 青岛小嫚瞒着父母当志愿者支援上海抗疫  近日,青岛小嫚王若琦在援沪救援车上完成大学毕业答辩的故事,引

2022-05-16

上海奉贤将逐步有序恢复正常生产生活秩序

  中新网5月16日电 据“上海奉贤”微信公众号消息,16日,上海市奉贤区新冠肺炎疫情防控工作领导小组办公室发布《告奉贤市民书》表示,

2022-05-16

上海:已经有15区实现社会面清零 封控区总人数降到100万人以内

  今天(5月16日)上午举行的上海市疫情防控工作新闻发布会上,上海市副市长宗明表示,本轮疫情发生以来,上海市毫不动摇坚持动态清零总方

2022-05-16

西宁公安严厉打击涉疫违法犯罪 依法处理案件72起123人

  中新网西宁5月16日电(祁增蓓)“我们严厉打击涉疫违法犯罪,5月6日以来,及时依法处理殴打辱骂防疫人员、伪造通行证件、逃避封控管理、

2022-05-16

专家:发生狂犬病Ⅲ级暴露后 需尽早使用被动免疫制剂

  中新网广州5月16日电 (蔡敏婕 何宇航)“狂犬病暴露预防处置研讨会”15日在广州举行。广东省预防医学会首席专家张永慧称,接种狂犬病

2022-05-16

孩子居家上体育课,影响楼下居家办公,算侵权扰民吗?

  “请问楼上是在跳绳吗?一蹦一蹦的,还有抽地的声音。”“不好意思,孩子在上居家体育课,有几个动作力量控制不好,已经结束了。”“剧

2022-05-16

甘肃渭源:千年渭水文化蕴“写生热” 校地合作塑学生文化涵养

  中新网甘肃渭源5月16日电 (张婧)“渭水汤汤,源远流长。”甘肃省定西市渭源县作为黄河最大支流渭河的发源地,这里民风淳厚、民居自然

2022-05-16

5月16日起 西宁市部分区域有序开放

  中新网西宁5月16日电(祁增蓓)西宁市新冠肺炎疫情防控处置工作指挥部15日晚宣布,16日起,西宁部分区域实行有序开放。  据悉,5月16日

2022-05-16