python-Django-表单基础概念

来源:腾讯云  发布时间:2023-04-25 12:41:34 

简介

表单是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,则说明这是第一次请求该页面,我们将表单类实例化,并将其传递到渲染模板的上下文中。

标签:

关闭

python-Django-表单基础概念

表单是Web应用程序中最常用的组件之一,它允许用户提交数据并与Web应用程序交互。在Django中,表单是由Djan更多

2023-04-25 12:41:34

天天消息!特斯拉中国试点开放充电网络 其他品牌

上证报中国证券网讯(记者俞立严)4月25日,特斯拉官方宣布,正式在中国大陆地区面向部分非特斯拉品牌新能更多

2023-04-25 12:33:41

环球今日报丨湖南石化职院受邀参加全国职业院校课

湖南石化职院受邀参加全国职业院校课题研讨会更多

2023-04-25 12:17:45

让知识产权保护意识厚植孩子心间,这堂课“干货满

“同学们,你们知道什么是专利吗?”“能不能购买盗版书呢?”今年4月26日是第23个世界知识产权日。4月24日更多

2023-04-25 11:42:35

东莞证券给予广和通买入评级 环球快看

东莞证券04月24日发布研报称,给予广和通(300638 SZ,最新价:22 53元)买入评级。评级理由主要包括:1)更多

2023-04-25 11:52:16

2023年注册会计师报名网站入口

注册会计师考试是中国注册会计师协会主办的全国性考试,是国内财务人员职业发展的重要证书之一。每年的报名更多

2023-04-25 11:52:23

台湾食药署发布边境查验不合格进口食品名单(4月2

2023年4月25日,台湾食药署发布边境查验不合格食品名单,其中不合格进口食品有扇贝、酸竹笋和椰子糖块等,更多

2023-04-25 11:37:44

大基建板块震荡下挫 当前热议

新疆交建跌停,山东路桥逼近跌停,筑博设计、汉嘉设计、华蓝集团跌超10%,新城市、地铁设计、招标股份、启更多

2023-04-25 11:31:37

科技巨头财报临近!美股涨跌互现,第一共和银行盘

科技巨头财报临近!美股涨跌互现,第一共和银行盘后重挫20%,美股,美债,盘后,加息,美联储,科技股,科技巨头,更多

2023-04-25 11:23:45

图解12306退票流程与步骤

首先需要说明的是,在12306网购火车票后,如果已经取票,那么我们将无法在网上退票,这种情况需要到服务窗更多

2023-04-25 11:01:42