Django Forms实例
# Django的Form主要具有一下几大功能:
#
# 生成HTML标签
# 验证用户数据(显示错误信息)
# HTML Form提交保留上次提交数据
# 初始化页面显示内容 # forms组件生成HTML标签格式
# class 表名Form(Form):
# 字段名 = fields.字段类型(
# 初始值,
# widgets=widgets.插件(attrs={html属性标签 字典格式})
# )
1.urls.py
url(r'^student', student),
2.models.py
from django.db import models # Create your models here.
class Class(models.Model):
title = models.CharField(max_length=32)
teachers = models.ManyToManyField("Teacher") def __str__(self):
return self.title class Teacher(models.Model):
name = models.CharField(max_length=32) def __str__(self):
return self.name class Student(models.Model):
username = models.CharField(max_length=16,unique=True)
age = models.IntegerField()
gender = models.BooleanField()
classes = models.ForeignKey("Class") def __str__(self):
return self.username
2.form.py
from .models import Student, Class, Teacher
# Create your froms here.
from django.forms import Form
from django.forms import widgets
from django.forms import fields class StudentForm(Form):
username = fields.CharField()(
widget=widgets.TextInput(attrs={"style":"color:red;"},)
)
age = fields.IntegerField() gender = fields.ChoiceField(
choices=((1, "男"), (0, "女"),),
initial=1,
widget=widgets.Select
)
classes = fields.IntegerField(
initial=1,
widget=widgets.Select()
)
# 绑定动态数据
def __init__(self, *args, **kwargs):
super(StudentForm, self).__init__(*args, **kwargs)
self.fields["classes"].widget.choices = Class.objects.all().values_list("id", "title")
4.views.py
from .forms import StudentForm
from .models import Student,Class,Teacher
def student(request):
if request.method == "GET":
obj = StudentForm()
return render(request, "t1/student.html", locals())
elif request.method == "POST":
obj = StudentForm(request.POST)
if obj.is_valid():
try:
val = obj.clean()
print(val)
Student.objects.create(username=val["username"], age=val["age"], gender=val["gender"],
classes_id=val["classes"])
return HttpResponse(val["username"] + "添加完成")
except Exception as e:
return HttpResponse("数据错误,请重新输入") else:
print(obj.clean())
return HttpResponse("ERROR") else:
return HttpResponse("error")
5.student.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/student/" method="POST" enctype="multipart/form-data">
{% csrf_token %} <p>用户名:{{ obj.username }} {{ obj.username.errors }}</p>
<p>年 龄:{{ obj.age }}{{ obj.age.errors }}</p>
<p>性 别:{{ obj.gender }}</p>
<p>班 级:{{ obj.classes }}</p> <input type="submit"value="添加用户"/>
</form>
</body>
</html>
Django Forms实例的更多相关文章
- Django forms 关于select和checkbox设置初始选中值及让前端选中指定值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- python django(forms组件)
forms组件最大的作用,就是做数据校验. 普通做法,一个一个写校验规则,没有解耦.校验规则,都在视图函数里面. 网页校验 修改urls.py,增加路径addbook from app01 impor ...
- Django forms 关于select和checkbox设置初始选中值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- django ---forms组件
forms组件 本文目录 1 校验字段功能 2 渲染标签功能 3 渲染错误信息功能 4 组件的参数配置 5 局部钩子 6 全局钩子 回到目录 1 校验字段功能 针对一个实例:注册用户讲解. 模型:mo ...
- django forms的常用命令及方法(一)
根据别人网上发布,个人爱好收集 Form表单的功能 自动生成HTML表单元素 检查表单数据的合法性 如果验证错误,重新显示表单(数据不会重置) 数据类型转换(字符类型的数据转换成相应的Python类型 ...
- Django 小实例S1 简易学生选课管理系统 11 学生课程业务实现
Django 小实例S1 简易学生选课管理系统 第11节--学生课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,学生需要拥 ...
- Django 小实例S1 简易学生选课管理系统 10 老师课程业务实现
Django 小实例S1 简易学生选课管理系统 第10节--老师课程业务实现 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 课程模块中,老师将要使 ...
- Django 小实例S1 简易学生选课管理系统 7 修改个人信息
Django 小实例S1 简易学生选课管理系统 第7节--修改个人信息 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 用户模块除了注册登录之外,还 ...
- Django 小实例S1 简易学生选课管理系统 4 实现登录页面
Django 小实例S1 简易学生选课管理系统 第4节--实现登录页面 点击查看教程总目录 作者自我介绍:b站小UP主,时常直播编程+红警三,python1对1辅导老师. 本文涉及到的新的额外知识点: ...
随机推荐
- 六、CLR下的托管代码应用程序与非托管代码程序之间的性能对比
1.托管程序二次编译的问题,以及微软做的优化 五.CLR加载程序集代码时,JIT编译器对性能的产生的影响中介绍了CLR下托管应用程序的二次编译对性能产生的影响.事实上,在IL编译成本机代码的时候的时候 ...
- PHP设计模式:观察者模式
示例代码详见https://github.com/52fhy/design_patterns 观察者模式 观察者模式(Observer)是对象的行为模式,又叫发布-订阅(Publish/Subscri ...
- js便签笔记(6)——jQuery中的ready()事件为何需要那么多代码?
前言: ready()事件的应用,是大家再熟悉不过的了,学jQuery的第一步,最最常见的代码: jQuery(document).ready(function () { }); jQuery(fun ...
- 第三章 使用Servlet处理HTTP响应
回顾上一章的知识: Java Servlet是运行在Web服务器或应用服务器上的Java程序 Servlet规范对Servlet功能进行了严格定义 Servlet API与容器进行通讯 Servlet ...
- 手机调试 ---- Node启动服务
最近刚开始做手机端Web网站, 在这段时间遇到过很多坑.比如各个安卓手机的JS兼容性问题,以及安卓手机与苹果手机的差异化. 最近在做一个需求.进入手机站点主页,会弹出置顶APP下载框,用户点击图片,如 ...
- HLOCAL 初探
首先看一段程序,输出的结果为两个相同的整数(这两个整数是内存地址). #include "stdafx.h" #include <windows.h> int _tma ...
- C# 集合 特殊集合
一集合 1.可为不同类型,不固定长度 2.集合类型分为泛型集合(强类型集合)与非泛型集合(弱类型集合). 3.非泛型集合的类和接口位于using System.Collections命名空间. 4.泛 ...
- easyui修改提示窗
1.将文本框type修改成 password 2.easyui中的js
- 【CentOS】设置服务开机自动启动
CentOS安装好apache.mysql等服务器程序后,并没有设置成开机自动启动的,为避免重启后还要手动开启web等服务器,还是做下设置好,其实设置很简单,用chkconfig命令就行了. 例如,要 ...
- 跨域CORS 头缺少 'Access-Control-Allow-Origin'
今天遇到一个跨域的问题找了好久的资料错误如下: 解决之后: 控制层 加上这两行代码就好啦: @RequestMapping(value = "",method = RequestM ...