form表单(一)

2018-08-09  本文已影响0人  LinearPi

知识点:

  1. 什么是表单
  2. GET和POST

HTML表单

在HTML中,表单的作用是收集标签中的内容,<form>...</form> 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。

一个表单必须指定两样东西:

  1. form的method参数用于设置表单的提交方式,默认使用POST.
  2. action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.

GET和POST:

  1. GET:GET如其名,是从服务器获取数据,不会更改服务器的状态和数据,在URL中携带参数发送给服务器。
  2. POST则是将一定量的数据发送给服务器,一般会更改服务器的数据。
  3. 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})
上一篇 下一篇

猜你喜欢

热点阅读