目录

form表单

一、get方式

1、编写前端页面

2、修改视图文件

3、修改路由

4、修改前端代码

5、查看效果

二、POST方式

1、编写前端代码

2、修改视图文件

3、查看效果

form表单类

1、在app当中创建一个forms.py脚本

(1)手动定义

(2)继承

2、修改views文件

3、修改urls文件

4、编写前端

5、查看效果

form表单的检验


form表单

Web开发当中,大部分的数据是通过form表达来向服务器进行提交

一、get方式

1、编写前端页面

以下是form.html的主要代码

1、form表单通过form标签中的action确定提交的位置,不写或者为空代表提交到当前路由

2、form表单通过form标签中的method确认请求方式,不写或者为空代表以get方式提交

3、form表单提交的时候,表单元素必须有name且唯一

<p>------------get--------------</p>
    <form action="" method="get">
        <p>
            <label>文章类型</label>
            <input type="text" name="types">
        </p>
        <p>
            <label>文章类型</label>
            <input type="submit" value="查询">
        </p>

    </form>
 

页面如下

django中的form表单和form表单类以及表单检测

2、修改视图文件

在views.py文件里,连接前端,并返回数据给前端

1、接收数据

request.GET可以接收前端传递过来的get请求的数据

request.GET是一个类字典对象

2、处理数据

增删改查

3、返回结果

locals

django中的form表单和form表单类以及表单检测

3、修改路由

在urls.py文件里,同步路由

django中的form表单和form表单类以及表单检测

4、修改前端代码

因为views.py文件接收了前端的数据,然后又给前端页面返回了参数,所以我们现在需要加入显示返回的数据的代码

    {% if articles %}
        {% for article in articles %}
            <p>{{ article.title }}</p>
        {% endfor %}
    {% endif %}
    <p>{{ types }}</p>

 

 

前端的总代码如下

<p>------------get--------------</p>
    <form action="" method="get">
        <p>
            <label>文章类型</label>
            <input type="text" name="types">
        </p>
        <p>
            <label>文章类型</label>
            <input type="submit" value="查询">
        </p>

    </form>
    {% if articles %}
        {% for article in articles %}
            <p>{{ article.title }}</p>
        {% endfor %}
    {% endif %}
    <p>{{ types }}</p>

5、查看效果

启动服务器,然后输入地址,显示效果如下

django中的form表单和form表单类以及表单检测

然后我们在文章类型中输入"散文",点击查询

django中的form表单和form表单类以及表单检测

可以看到,前端接收到了views视图文件中传回来的数据,并显示了出来

如果不输入数据就查询的话,则会显示None Type

django中的form表单和form表单类以及表单检测

 

二、POST方式

CSRF(Cross-site-request-forgery)跨站请求伪造.XSRF

Django已经编写好了csrf的逻辑,默认django的post请求必须经过csrf校验。

Django post请求步骤:

  • 1、使用render方法进行返回
    • Render方法的第一个参数必须是request,其他地方和render_to_response方法相似
  • 2、在form表单的最上层添加{% csrf_token %}
  • 3、然后开始和get请求类似接受数据和处理数据的步骤

1、编写前端代码

<p>---------------post-----------------</p>
    <form action="" method="POST">
        {% csrf_token %}
        <p>
            <label>类型名称</label>
            <input type="text" name="name">
        </p>
        <p>
            <label>类型描述</label>
            <textarea name="description"></textarea>
        </p>
        <p>
            <input type="submit" value="注册">
        </p>
    </form>
     {% for t in types %}
            <p>{{ t.label }}-------{{ t.description }}</p>
     {% endfor %}

 

2、修改视图文件

和get方式相差不多

django中的form表单和form表单类以及表单检测

因为我们这里使用的同样是form,所以就不需要去urls文件里修改路由了,同时需要把get方法版本的form注释掉

3、查看效果

启动服务器,打开浏览器输入地址

django中的form表单和form表单类以及表单检测

点击注册后

django中的form表单和form表单类以及表单检测

红框内就是刚刚添加的

django中的form表单和form表单类以及表单检测

同时,数据表中也添加了这个数据

 

form表单类

表单可以提交数据,同时表单还需要做校验。

我们可以用前端进行校验,开发难度较低,但是前端校验不能完全防止错误数据,因为有些请求是可以不经过网页的,所以一个安全的注册需要前后端共同校验。

1、在app当中创建一个forms.py脚本

Form类表单的修饰

  • Required 字段是否可以为空 True
  • Max_length 最大长度
  • Min_length 最小长度
  • Label 标签
  • Initial 初始值
  • Help_text 帮助文本
  • Error_message 错误信息
  • Disabled 是否可以被修改
  • Widget 添加前端样式

创建这个文件有两种方式

(1)手动定义

django中的form表单和form表单类以及表单检测

(2)继承

我们最开始在app的models文件中创建数据表的时候,创建了类,这里就直接继承那里的类的就行

django中的form表单和form表单类以及表单检测

2、修改views文件

首先导入刚刚创建的forms.py,并实例化AuthorForm

django中的form表单和form表单类以及表单检测

然后把authorForm实例当成字典返回给前端界面

3、修改urls文件

添加forms路由

django中的form表单和form表单类以及表单检测

4、编写前端

1、直接使用

2、As_p 添加到p标签里

3、As_ul 添加到ul标签里

4、As_table(已经失效)

5、循环使用 在循环里标签

django中的form表单和form表单类以及表单检测

5、查看效果

启动服务器后,输入地址,显示的界面

django中的form表单和form表单类以及表单检测

 

form表单的检验

 

  • 1、校验步骤
  • 1、获取前端提交的数据,并将数据传递form类当中
  • 2、使用form类实例的is_valid方法进行校验
  • 3、使用form类实例的clean_data获取校验过的数据,errors方法获取校验发生的错误

在views文件中,修改视图

django中的form表单和form表单类以及表单检测

然后在urls文件中同步路由

django中的form表单和form表单类以及表单检测

最后还是编写前端代码

django中的form表单和form表单类以及表单检测

 

启动服务器,打开网页,当你没有满足要求就直接提交时,它会提示你,这是django自带的前端的检测,如果前端的检测都满足,那么我们还有后端的检测

django中的form表单和form表单类以及表单检测

 

自定义校验

1、自定义校验的方法名称必须是clean_校验字段的名称

2、通过self.clean_data方法获取校验字典的具体值

3、如果发生错误使用self.add_error(“字段名称”,”错误内容”)添加错误

之前在forms文件里的这段红框代码,就是自定义的检测,可以用于敏感词

django中的form表单和form表单类以及表单检测

相关文章: