计算a和b之和
第一节
home.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>
网页的值传到服务器是通过 或 标签中的 name 属性来传递的,在服务器端这么接收:
view.py
from django.http import HttpResponse
from django.shortcuts import render
def index(request):
return render(request, 'home.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)来取值,没有时不报错。
第二节:使用Django的表单(forms)
新建一个 zqxt_form2 项目
django-admin.py startproject zqxt_form2
# 进入到 zqxt_form2 文件夹,新建一个 tools APP
python manage.py startapp tools
在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, 'home.html', {'form': form})
对应的模板文件 home.html
<form method='post'>
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>
再在 urls.py 中对应写上这个函数
from django.contrib import admin
from django.conf.urls import include,url
from mysite import views
urlpatterns = [
url(r'^$',views.home,name='home'),
url(r'^admin/', admin.site.urls),
]