首先先新建一个项目,并且在myApp 的文件夹里新建一个文件forms.py

django 怎么调用 pytest django forms.py_django


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')

这里设定的为数字,还可以设置成其他的

django 怎么调用 pytest django forms.py_html_02


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 里进行设置,因为前面介绍过多次,这里不再一一列举。

最后,运行程序,可以看到有如下效果

django 怎么调用 pytest django forms.py_django 怎么调用 pytest_03

下来,查看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))

django 怎么调用 pytest django forms.py_django 怎么调用 pytest_04


在index.html 文件中, 在form 标签的action属性加上’/add’, 并且设置属性method=”GET”

django 怎么调用 pytest django forms.py_django_05


最后在url.py 中加上这个路径,

django 怎么调用 pytest django forms.py_django_06


打开浏览器,在输入框分别输入 123, 456 ,点击提交,可以看到:

django 怎么调用 pytest django forms.py_django form_07

POST 用法

将index.html 中 form的 action 属性加上’/add/’, 并且加上属性method=”POST”

post请求接口后面需要追加另外一个/

所以这里add 前后各一个 /

django 怎么调用 pytest django forms.py_django_08


在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')

django 怎么调用 pytest django forms.py_django form_09


最后在输入框输入数字,点击提交,可以看到如下界面

django 怎么调用 pytest django forms.py_django form_10

以上便是post 和 get 的不同用法