表单

来源:互联网 发布:apk语音阅读软件 编辑:程序博客网 时间:2024/05/14 08:17

在tools文件夹中新建一个 forms.py 文件

1
2
3
4
5
from django import forms
 
class AddForm(forms.Form):
    = forms.IntegerField()
    = forms.IntegerField()

我们的视图函数 views.py 中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
 
# 引入我们创建的表单类
from .forms import AddForm
 
def index(request):
    if request.method == 'POST':# 当提交表单时
     
        form = AddForm(request.POST) # form 包含提交的数据
         
        if form.is_valid():# 如果提交的数据合法
            = form.cleaned_data['a']
            = form.cleaned_data['b']
            return HttpResponse(str(int(a) + int(b)))
     
    else:# 当正常访问时
        form = AddForm()
    return render(request, 'index.html', {'form': form})

对应的模板文件 index.html

1
2
3
4
5
<form method='post'>
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>

再在 urls.py 中对应写上这个函数

1
2
3
4
5
6
7
8
9
10
from django.conf.urls import patterns, include, url
 
from django.contrib import admin
admin.autodiscover()
 
urlpatterns = patterns('',
    # 注意下面这一行
    url(r'^$''tools.views.index', name='home'),
    url(r'^admin/', include(admin.site.urls)),
)

新手可能觉得这样变得更麻烦了,有些情况是这样的,但是 Django 的 forms 提供了:

  1. 模板中表单的渲染

  2. 数据的验证工作,某一些输入不合法也不会丢失已经输入的数据。

  3. 还可以定制更复杂的验证工作,如果提供了10个输入框,必须必须要输入其中两个以上,在 forms.py 中都很容易实现


0 0