form的主要作用:1.在html中生成表单框架,2.验证数据(实话实说,很简洁,但不实用,灵活性差)

from django.db import models

# Create your models here.

class UserInfo(models.Model):
name = models.CharField(max_length=32,verbose_name='用户名')
email = models.EmailField(max_length=32,verbose_name='邮箱',default='123@live.com')
pwd = models.CharField(max_length=32,verbose_name='密码',default='')
ut = models.ForeignKey(to='UserType',default=1,verbose_name='用户类型',on_delete=models.CASCADE)
def __str__(self):
return self.name class Role(models.Model):
title = models.CharField(max_length=32,verbose_name='用户角色')
users = models.ForeignKey(to='UserInfo',verbose_name='用户职位',on_delete=models.CASCADE) def __str__(self):
return self.title class UserType(models.Model):
title = models.CharField(max_length=32,verbose_name='用户类型') def __str__(self):
return self.title

2. 在model目录下新建forms.py

有两种写法:
a. 定义表单模型
from django import  forms
class UserInfoForm(forms.Form):
ame = forms.CharField(max_length=100, label='用户名')
email = forms.EmailField(label='电子邮件')
pwd = forms.CharField(label='密码', widget=forms.Textarea)

b. 继承model

from django.forms import ModelForm
from myblog.users.models import Users class TestModeForm(ModelForm):
class Meta:
model = UserInfo
fields = "__all__" # 或者fields = ('name','pwd','email')
3.在view视图中 ,做表单验证
def contact(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
username = form.cleaned_data['uname']
pwd = form.cleaned_data['pwd']
email = form.cleaned_data['email']return HttpResponseRedirect('/index/')
else:
return render_to_response('contact.html', {'form': form, })

4. 在html页面,代码超简单,这点django做的不错

<form id="your-profile" action="/contact" method="post">
<table class="form-table">
<!--{{ form.as_ul }}--> # 这是第一种写法,在
<ul> 显示表单
<!-- {{ form.as_p }}--> # 这是第二种写法,在<p> 显示表单
<!--{{ form.as_table }}--> # 这是第三种写法,在
<table>显示表单
{% for field in form %} # 这是第四种写法,以循环形式显示表单
{{ field.label_tag }}:{{ field }}
{{ field.errors }}
{% endfor %}
</table>
<p class="submit"><input type="submit" name="submit" id="submit" class="button-primary" value="注册信息"/></p>
</form>

# 注意是记录一下form.as_* 系列的操作是什么意思

Django 中form的用法的更多相关文章

  1. Django中Form验证

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一,Form验证 第一种操作:主要是这三个函数 ...

  2. django中form表单的提交:

    一,关于表单: 表单在百度百科的解释:   表单在网页中主要负责数据采集功能.一个表单有三个基本组成部分: 表单标签:这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法. 表单域 ...

  3. Django中模板的用法简介

    1. 模板系统的介绍 Django作为一个Web框架,其模板所需的HTML输出静态部分以及动态内容插入 模板由HTML代码和逻辑控制代码构成 Django框架的模板语言的语法格式: {{var_nam ...

  4. Django中Form的基本使用

    from django import forms from django.forms import fields class UserInfo(forms.Form): username = fiel ...

  5. Django 中 form 介绍

    目录 Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用 ...

  6. Django中Form组件的使用

    Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...

  7. django中form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  8. 如何写django中form的测试用例

    可简可繁, 可插库,可字符, 要测试valid,也要测试invalid, 可用csrf,也可用context. 放一个全面的, 实践中,找一个最优的组合就好. class NewTopicTests( ...

  9. Django中Form的Textarea字段

    开始以为是这个样子: class BlogForm(forms.Form): title    = forms.CharField(required = True) content  = forms. ...

随机推荐

  1. 2018九省联考(SHOI2018)

    听说在退役前还能有去外省的机会QAQ D1 9点T1,T2过拍,感觉自己稳得一批,然后边看T3边幻想AK 事实证明我是多么菜多么无知多么傻逼 想T3时太浮躁,最后也没想出来 T2根本没有想过去怀疑自己 ...

  2. <深入理解计算机系统>第七章读书笔记

    第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号 ...

  3. max os取消开机启动

    原文:http://liuzhichao.com/p/1667.html 安装MAMP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache ...

  4. bzoj2296: 【POJ Challenge】随机种子(思维题/水题)

    有点类似CF某场div2T1... 前面接上1234567890000000,后面加上x+(1234567890000000%x)就可以保证是x的倍数了 #include<iostream> ...

  5. Android之框架20160721

    Android的四层架构分别为:Linux2.6内核层,核心库层,应用框架层,应用层. 其中Framework层为我们开发应用程序提供了非常多的API,我们通过调用特殊的API构造我们的APP,满足我 ...

  6. 《剑指offer》— JavaScript(3)从尾到头打印链表

    从尾到头打印链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值. 实现代码 /*function ListNode(x){ this.val = x; this.next = null; }* ...

  7. 图像处理之中值滤波介绍及C实现

    1 中值滤波概述 中值滤波是基于排序统计理论的一种能有效抑制噪声的非线性信号平滑处理技术,它将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值. 中值滤波的基本原理是把数字图像或数字序 ...

  8. (转)iOS开发——来改掉那些被禁用的方法吧(持续更新中)

    iOS平台在快速的发展,各种接口正在不断的更新.随着iOS9的发布,又有一批老方法不推荐使用了,你若调用这些方法,运行的结果是没有问题的,但是会出现警告“***is deprecated :first ...

  9. Codeforces Round #271 (Div. 2) D 简单dp

    D. Flowers time limit per test 1.5 seconds memory limit per test 256 megabytes input standard input ...

  10. python析构函数

      class Test(object): def __init__(self, name): self.name = name print('这是构造函数') def say_hi(self): p ...