Django 表单介绍和查用方法

来源:互联网 发布:qq群踢人软件 编辑:程序博客网 时间:2024/06/05 08:49

Django 中的表单

在jango中的表单与平常意义的表单在理解上有所不同.我们先来说说常见的表单

HTML forms:

在HTML中一个表单就是一个集合,集合的内容是<form></form>里的元素,像文本框,单选框,操控按钮等,让用户操作,使才用户录入的信息返回服务器。但是这里面用html创建出的元素功能过于简单。例如<input></input>提供用户输入,但是在我们不对其做限制的时候(js实现)用户的输入是不受限制的,或是说合法性我们只能在数据返回到服务器的时候做逻辑判断再把判断结果发回给用户。

Django的表单:

django中的表单形式可以实现复杂的业务处理。html中的表单是把前端数据直接返回服务器,但是在jango中实现表单数据采集一共分3步:1.为前端渲染准备数据结构的定义(string or int ?)在第一步里我们可以细致化的设置每一个input框输入内容的格式例如:邮箱.可以限制输入内容的长度。2.在前端html渲染后台定义好的数据结构在这一步渲染后的form里的各个元素会根据先前设置实现自动判断用户输入是否满足条件,例如:邮箱的格式是否正确      3.接受表单提交数据到服务器直至每个元素的输入都合法后才可以触发表单提交动作,与html中表单提交类似

这里我们直接来看下Django中的表单使用例子

from django import formsclass NameForm(forms.Form):    your_name = forms.CharField(label=’Your name’, max_length=100)这个表单类只有一个字段(your_name),我们采用人性化的标签字段,这将出现在<label>当它呈现时,我们限制该输入框最多允许长度为100的字符串

我们在views中写这么一段代码

from django.shortcuts import renderfrom django.http import HttpResponseRedirectdef get_name(request):# 如果是POST请求    if request.method == ’POST’:    #通过接收到的数据创建表单实例        form = NameForm(request.POST)        # 检查它是不是合法        if form.is_valid():            return HttpResponseRedirect(’/thanks/’)    else:        form = NameForm()        return render(request, ’name.html’, {’form’: form})
—->在html页面中写>
<form action="/your-name/" method="post">    {% csrf_token %}    {{ form }}    <input type="submit" value="Submit" /></form>这里我们在views中写下这段代码,如果用户第一次进入表单所在的页面,form为NameForm()这时候前端html会渲染出后台定义好的form的每一个元素当然jango的Form也提供了表单前端渲染时候的几个选项form.as_table  在<tr>中渲染form.as_p   在<p>中渲染form.as_ul 在<li>中渲染

这里还可以更细致的控制前端渲染

{{ form.non_field_errors }}<div class="fieldWrapper">    {{ form.subject.errors }}    <label for="id_subject">Email subject:</label>    {{ form.subject }}</div><div class="fieldWrapper">    {{ form.message.errors }}    <label for="id_message">Your message:</label>    {{ form.message }}</div><div class="fieldWrapper">    {{ form.sender.errors }}    <label for="id_sender">Your email address:</label>    {{ form.sender }}</div><div class="fieldWrapper">    {{ form.cc_myself.errors }}    {{ form.cc_myself }}</div>objects.errors表示该标签在录入中如果格式错误,报错信息的位置{{ field.label }} 表示字段的label{{ field.label_tag }} 表示该字段的label在一个<label>标签内{{ field.value }} 表示用户输入的值{{ field.label }}  :表示字段的label
0 0
原创粉丝点击