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辅导老师. 本文涉及到的新的额外知识点: ...
随机推荐
- Android的断点续传的下载在线文件示例
Android的断点续传的下载在线文件示例 文件的结构如下: activity_main.xml: <LinearLayout xmlns:android="http://schema ...
- 02-04:springboot 访问静态资源
1.SpringBoot从classpath/static的目录下:(目录名称必须叫static,可以理解为根目录为static) 2.servletContext根目录下,进行查找: 在src/ma ...
- c# winform as3相互调用
C#主要代码: 首先要添加COM组件-Shockwave Flash Object //接收flash发送过来的信息 private void axShockwaveFlash1_Fla ...
- C语言版 Hello World
C语言的Hello World 程序, 需要引入 <stdio.h> 头文件,输出使用 printf()方法: #include <stdio.h> int main() { ...
- gpexpand分析
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由maxluo发表于云+社区专栏 一. gp扩容步骤 1.1 初始化机器 目标:新增加的机器需要初始化和已有机器环境一样. 具体包括不限 ...
- golang内置数据类型作为函数参数
先上结论 golang的所有内置类型作为函数参数传递都是传值的方式(没有传递引用一说),需要注意的是:数组.slice和map作为函数参数时也是传值,但是如果对结构内元素进行的修改,修改的是原数据.如 ...
- BeanDefinition到Bean
转自:http://songzi0206.iteye.com/blog/1430239 当 BeanDefinition 注册完毕以后, Spring Bean 工厂就可以随时根据需要进行实例化了.对 ...
- git命令小记
1.git之tag git标签分为轻量级(lightweight)标签和含标注(annotated)标签.轻量级标签一般用于不会改变的分支,含标注的标签包含详细的信息. 轻量级标签: git tag ...
- Java Web 项目简单配置 Spring MVC进行访问
所需要的 jar 包下载地址: https://download.csdn.net/download/qq_35318576/10275163 配置一: 新建 springmvc.xml 并编辑如下内 ...
- java权限控制以及变量的初始化
知识是靠积累的,不断的温习会帮你让你遇到许多问题,解决完这些问题之后,会收获许多,233333333333333. 1.java访问控制符 2.java变量初始化问题 默认构造方法的名字与类名相同,它 ...