django 表单系统 之 forms.Form

继承forms.Form实现django表单系统

参考:

https://www.cnblogs.com/zongfa/p/7709639.html

https://www.cnblogs.com/chenchao1990/p/5284237.html

官方文档:

https://docs.djangoproject.com/en/dev/topics/forms/

https://docs.djangoproject.com/en/1.11/ref/forms/

 

继承forms.Form可以实现基于model的django表单

而继承forms.Form可以实现一般的django表单,

django表单的功能:

  • 自动生成HTML表单元素
  • 检查表单数据的合法性
  • 如果验证错误,重新显示表单(数据不会重置)
  • 数据类型转换(字符类型的数据转换成相应的Python类型)

 

表单定义:

from django import formsclass NameForm(forms.Form):

    your_name = forms.CharField(label='Your name', max_length=100)

上面这个标签渲染后的效果:

<label for="your_name">Your name: </label><input id="your_name" type="text" name="your_name" maxlength="100" required>

 

view中向前端传页面:

from django.shortcuts import renderfrom django.http import HttpResponseRedirect

from .forms import NameForm

def get_name(request):

    # post请求

    if request.method == 'POST':

        form = NameForm(request.POST)

        # 表单验证

        if form.is_valid():

            # 用form.cleaned_data获取经过验证后的表单数据(字典格式)然后进行所需的处理

            # ...

            # redirect to a new URL:

            return HttpResponseRedirect('/thanks/')

 

    # get请求

    else:

        form = NameForm()

 

    return render(request, 'name.html', {'form': form})

 

前端调用:

<form action="/your-name/" method="post">

    {% csrf_token %}

    {{ form }}

    <input type="submit" value="Submit"></form>

 

 

 

原文地址:https://www.cnblogs.com/zealousness/p/8757174.html