form表单(一)
2018-08-09 本文已影响0人
LinearPi
知识点:
- 什么是表单
- GET和POST
HTML表单
在HTML中,表单的作用是收集标签中的内容,<form>...</form> 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。
一个表单必须指定两样东西:
- form的method参数用于设置表单的提交方式,默认使用POST.
- action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.
GET和POST:
- GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
- POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
- POST方法的参数不能在URL当中看到,他是通过body参数传递给服务器的,所以相对GET方法直接能在URL当中看到传递的参数,显得更加安全一些.当然,也不能简单的判定POST方法比GET方法更安全,要使网站保持安全,需要做更多的安全处理.
例子:
# 使用get方法的表单例子:
#--------add1.html------------
<form action="/biaodan/add/" method="get">
a: <input type="text" name="a"> <br>
b: <input type="text" name="b"> <br>
<input type="submit" value="提交">
</form>
#--------biaodan/view.py---------
def index1(request):
return render(request,'biaodan/add1.html')
def add1(request):
a = request.GET['a']
b = request.GET['b']
a = int(a)
b = int(b)
return HttpResponse(str(a+b))
#-------url.py--------
url(r'^$', views.index1, name='biaodan_index'),
url(r'^add1/$', views.add1, name='biaodan_add'),
# 使用form及post方式的表单
#------biaodan/form.py-------
from django import forms
class AddForm(forms.Form):
a = forms.IntegerField()
b = forms.IntegerField()
#--------add2.html--------
<form method='post'>
{% csrf_token %}
{{ form }}
<input type="submit" value="提交">
</form>
#--------biaodan/view.py--------
from .form import AddForm
def index2(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, 'biaodan/add2.html', {'form': form})