Django Form表单基础

平时我们写表单要自己写样式,比如我们要写一个注册样式,有如下填写项:

实现代码如下:

views.py文件

#!/usr/bin/env python
#-*-conding:utf-8:-*-
from django.shortcuts import render
from django import forms
# Create your views here.
def user_list(request):
    host = request.POST.get(‘host‘)
    port = request.POST.get(‘port‘)
    email = request.POST.get(‘email‘)
    mobile = request.POST.get(‘mobile‘)
    return render(request,‘user_list.html‘)

user_list.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="user_list" method="post">
      <p>主机:<input type="text" name="host"/></p>
      <p>端口:<input  type="text" name="port"/></p>
      <p>邮箱:<input  type="text" name="email"/></p>
      </p>手机:<input  type="text" name="mobile"/></p>
      <input type="submit" value="submit">
</form>
</body>
</html>

url.py文件

from django.conf.urls import url

from django.contrib import admin

from app01 import views

urlpatterns = [

url(r‘^admin/‘, admin.site.urls),

url(r‘^user_list/‘, views.user_list),

]

着这里我们要求用户输入的只有主机、端口、email、mobile,所以在views.py中只有

host = request.POST.get(‘host‘)

port = request.POST.get(‘port‘)

email = request.POST.get(‘email‘)

mobile = request.POST.get(‘mobile‘)

这四项,试问,如果有多余目前的四项比如20或者30...,是不是我们要在函数user_list中再接着写更多类似的语句?答案不言而喻,是肯定的,那么有没有更简单方便的方法呢?肯定有,另外我们这样写获取数据的机制,如果用户输入为空,那么我们是不是都要一一做验证?为了解决以上的问题,我们可以利用django的一个优势,即django的form表单验证机制:

我们对以上代码做修改:

views.py

#!/usr/bin/env python
#-*-conding:utf-8:-*-
from django.shortcuts import render
from django import forms

class UserInfo(forms.Form):
    email = forms.EmailField()
    host = forms.CharField()
    port = forms.CharField()
    mobile = forms.CharField()
# Create your views here.
def user_list(request):
    obj = UserInfo()
    if request.method == "POST":
          user_input_obj = UserInfo(request.POST)
          if user_input_obj.is_valid():
                  data = user_input_obj.clean()
                  print data
          else:
                  error_msg = user_input_obj.errors
                  return render(request,‘user_list.html‘,{‘obj‘:user_input_obj,‘errors‘:error_msg})
    return render(request,‘user_list.html‘,{‘obj‘:obj})

user_list.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<form action="user_list" method="post">
        #这里的obj是views.py中{‘obj‘:obj}中的value,而‘obj‘是request中的一个变量
     <p> 主机:{{ obj.host }}<span>{{ errors.host }}</span></p>
     <p> 端口:{{ obj.port }}<span>{{ errors.port }}</span></p>
     <p> 邮箱:{{ obj.email }}<span>{{ errors.email }}</span></p>
     <p> 手机:{{ obj.mobile }}<span>{{ errors.mobile }}</span></p>
    <input type="submit" value="submit">
</form>
</body>
</html>

至此,我们完成了django表单的验证操作,关键定义一个类UserInfo然后继承Forms.form来实现后续的值的获取和验证功能。

时间: 2024-11-08 01:44:11

Django Form表单基础的相关文章

Django Form表单

Django  Form 表单 在实际的生产环境中比如登录和验证的时候,我们一般都使用Jquery+ajax来判断用户的输入是否为空,假如JS被禁用的话,咱们这个认证屏障是不是就消失了呢?(虽然一般不会禁用掉但是还是存在风险) 所以我们一般做两种认证一种是前端做一遍认证,在后端做一遍认证. 首先咱们看一下下面的案例: from django.shortcuts import render # Create your views here. def user_list(request): host

Python自动化运维系列之Django Form表单验证

Form表单验证 Django核心功能组件之一,虽然也可以在前端使用JS对表单验证, 但是Django中已经为我们准备好的Form功能还算是很强大的,有时候比较适合运维,为我们简化了很多前端开发工作. Django最主要的几个功能有4个     ·  生成HTML标签     ·  验证数据(表单错误信息提示)     ·  HTML 表单保留上次提交数据     ·  初始化页面表单内容 Django的Form内容还是挺多的,我们可以从一个简单的登陆验证例子来看看Form的基本功能使用 1)新

Django Form 表单(上)

我们已经知道了在Django里面如何从前端向后台发送数据的基本操作.( http://beanxyz.blog.51cto.com/5570417/1944978 )在之前的例子里面,我们的HTML模板里面的form表单都是手动创建的,对于提交的数据类型格式也需要自己写正则表达式进行确认.(例如AJAX的例子http://beanxyz.blog.51cto.com/5570417/1951021  ) 如果表单很多的话,手动处理这些东西会很费时间.Django提供了一个form的功能,可以根据

python django Form表单

Django 拥有自己独立的表单功能块,可以完成: 1.表单的定义 2.表单的校验 3.表单的前端样式 等功能,方便我们开发,那么接下来,我们看一下表单的定义 首先我们确定我们要编写的功能,一个提供给博客的访客发送自己的联系方式的功能.并且搭建相对应的数据库 1 from django.db import models 2 3 class Connection(models.Model): 4 con_name = models.CharField(max_length = 32,verbose

Django form表单的数据加载问题

今天在项目中遇到一个问题,有个django增删改查的模板页面,其中的编辑页面使用自定的form来构建的显示内容. 表单的数据时从数据库中查询出来展示的,当修改数据库的内容后,form的展示的信息并没有修改.当重启后,form的数据重新加载. 查了许多资料,都没有对form表单数据的加载时间的解答. 从现象来看,form的数据的加载时在服务启动时,就加载了.代码如下: view.py def testform(req):     form = testForms.testForm()     pr

6月28日 Django form表单

Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确.如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.. Django form组件就实现了上面所述的功能. 总结一下,其实form组件的主要功能如下: 生成页面可用的HTML标签 对用户提交的数据进行校验 保留上次输入内容 普通的登录 views.p

django form表单验证

简单例子: 1 #自定义验证类 2 class Check_form1(forms.Form): 3 #user就是要验证的字段,这里对应前端name <input type='text' name=user> 4 user = fields.CharField() 5 pwd = fields.CharField() 6 email = fields.EmailField() 7 8 9 10 def test_form1(request): 11 if request.method ==

Form表单基础知识和常用兼容方法笔记(一)

需要用到的HTML <form id="myForm" name="yourForm" action=""> 姓名:<input type="text" id="textFiled" name="user" value="text"> <p id="box"></p> <input type=&

django form表单动态加载下拉列表选项内容

三张表:应用名称表"appname",单位表"unit",应用名称表和单位表多对多关系表"unit_unit_permissionList" model_appname.py # -*- coding: utf-8 -*- from django.contrib import admin from django.db import models from django.utils.translation import ugettext_lazy