您现在的位置:首页 >> 前端 >> 内容

Django-表单

时间:2017/3/10 9:14:00 点击:

  核心提示:1. HTML表单前台用 get 或 post 方法提交一些数据,所以自己写一个网页,用到 html 表单的知识。计算a+b的应用,Html文件如下!DOCTYPE htmlhtmlbodyp请输入两...

1. HTML表单

前台用 get 或 post 方法提交一些数据,所以自己写一个网页,用到 html 表单的知识。

计算a+b的应用,Html文件如下

<!DOCTYPE html>
<html>
<body>
<p>请输入两个数字</p> 
<form action="/add/" method="get">
    a: <input type="text" name="a"> <br>
    b: <input type="text" name="b"> <br>

    <input type="submit" value="提交">
</form>

</body>
</html>

把这些代码保存成一个index.html,放在 templates 文件夹中。

网页中的值通过或标签中的name属性传到服务器。服务器端,

views.py
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
    return render(request, 'index.html')

def add(request):
    a = request.GET['a']
    b = request.GET['b']
    a = int(a)
    b = int(b)
    return HttpResponse(str(a+b))

request.GET 可以看成一个字典,用GET方法传递的值都会保存到其中,可以用 request.GET.get(‘key’, None)来取值,没有时不报错。

再将函数和网址对应上,就可以访问了.

2. Django的表单forms

在app文件中建立forms.py
from django import forms

class AddForm(forms.Form):
    a = forms.IntegerField()
    b = forms.IntegerField()

views.py

# 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():# 如果提交的数据合法
            a = form.cleaned_data['a']
            b = form.cleaned_data['b']
            return HttpResponse(str(int(a) + int(b)))

    else:# 当正常访问时
        form = AddForm()
    return render(request, 'index.html', {'form': form})

对应模板文件index.html

<form method='post'>
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>

urls.py设置连接路径

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 渲染成 Bootstrap 的插件,也很好用,很方便。

Tags:DJ JA AN NG 
作者:网络 来源:Deephome的博