首先先新建一个项目,并且在myApp 的文件夹里新建一个文件forms.py
forms.py 是django里面用来生成form表单的一个文件 在这个文件里面可以实现form表单的定义
我们可以让这个文件作用于html里面,以达到丰富html页面的效果
比如,设置表单内容类型或者合法性检查
1. 在form.py 文件里进行如下配置
from django import forms
# 使用forms会自动为我们生成label标签以及input标签
# 但是form标签以及button标签需要自己来写
class SumForm(forms.Form):
a1 = forms.IntegerField(label='num1')
b1 = forms.IntegerField(label='num2')
这里设定的为数字,还可以设置成其他的
2. 新建一个templates 文件夹,在里面新建一个index.html 文件,配置如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>form 表单</title>
</head>
<body>
<form action="">
{% csrf_token%}
{# 如果使用form表单并且进行post请求的时候 csrf一定要加
它是黑客进行跨域攻击的一种要重要手段
<!--这个是自己在这里写的-->
<label for="">num0:</label>
<input type="text" name="c1">
<!--这个表示从forms.py 文件里引入的有两个-->
{{form}}
<button type="submit">提交</button>
</form>
</body>
</html>
然后配置urls 里的文件,还有在settings.py 里进行设置,因为前面介绍过多次,这里不再一一列举。
最后,运行程序,可以看到有如下效果
下来,查看form表单的GET 和 POST用法
GET用法
在views.py 增加一个函数:
def add_form(request):
if request.method == 'GET':
# get方法获取表单的值,可以通过GET['XX']这种方式
first_value = request.GET['a1']
second_value = request.GET['b1']
return HttpResponse(int(first_value) + int(second_value))
在index.html 文件中, 在form 标签的action属性加上’/add’, 并且设置属性method=”GET”
最后在url.py 中加上这个路径,
打开浏览器,在输入框分别输入 123, 456 ,点击提交,可以看到:
POST 用法
将index.html 中 form的 action 属性加上’/add/’, 并且加上属性method=”POST”
post请求接口后面需要追加另外一个/
所以这里add 前后各一个 /
在views.py 文件里进行如下配置
from django.shortcuts import render
from django.http import HttpResponse
from .forms import SumForm
# Create your views here.
def index(request):
form = SumForm()
return render(request, 'index.html', {'form': form})
def add_form(request):
if request.method == 'GET':
first_value = request.GET['a1']
second_value = request.GET['b1']
return HttpResponse(int(first_value) + int(second_value))
else:
# 初始化一个forms对象 并且获取请求方式和请求内容
form = SumForm(request.POST)
# form 是合法的
if form.is_valid():
first_value = form.cleaned_data['a1']
second_value = form.cleaned_data['b1']
return HttpResponse(int(first_value) + int(second_value))
else:
return HttpResponse('内容不合法')
# render(request, 'index.html')
最后在输入框输入数字,点击提交,可以看到如下界面
以上便是post 和 get 的不同用法