Django【进阶】modelform
实例:
- class UserModelForm(ModelForm):
- class Meta:
- model = models.UserInfo
- fields = "__all__"
- # fields = ['username','nickname',]
- # exclude = ['username',]
- # error_messages = {
- # "username": {'required':'用户名不能为空'}
- # }
- # widgets = {
- # "username":wid.Textarea(attrs={'class':'c1'})
- # }
- # labels = {
- # 'username':'用户名'
- # }
- # help_texts = {
- # 'username': '别瞎写,瞎写打你哦'
- # }
- #
- # field_classes = {
- # 'username': fld.EmailField
- # }
- # 钩子
- # def clean_email(self):
- # pass
- #
- # def clean_nickname(self):
- # pass
- #
- # def clean(self):
- # pass
- def user_add(request):
- # 现在的你# 创建Form类:
- if request.method == 'GET':
- model_form = UserModelForm()
- return render(request,'rbac/user_add.html',{'model_form':model_form})
- else:
- model_form = UserModelForm(request.POST)
- if model_form.is_valid():
- model_form.save()
- return redirect('/rbac/users.html')
- return render(request, 'rbac/user_add.html', {'model_form': model_form})
- def user_edit(request,pk):
- obj = models.UserInfo.objects.filter(pk=pk).first()
- if not obj:
- return redirect('/rbac/users.html')
- if request.method == 'GET':
- model_form = UserModelForm(instance=obj)
- return render(request,'rbac/user_edit.html',{'model_form':model_form})
- else:
- model_form = UserModelForm(request.POST,instance=obj)
- if model_form.is_valid():
- model_form.save()
- return redirect('/rbac/users.html')
- return render(request, 'rbac/user_edit.html', {'model_form': model_form})
- # 表格:
- <body>
- <a href="/rbac/user/add.html">添加</a>
- <table border="">
- {% for row in user_list %}
- <tr>
- <td>{{ row.pk }}</td>
- <td>{{ row.nickname }}</td>
- <td>{{ row.username }}</td>
- <td>
- <a href="/rbac/user/edit/{{ row.pk }}.html">编辑</a>
- </td>
- </tr>
- {% endfor %}
- </table>
- </body>
- # 添加:
- <body>
- <h1>添加用户</h1>
- <form method="POST" novalidate>
- {% csrf_token %}
- {{ model_form.as_p }}
- <input type="submit" value="提交" />
- </form>
- </body>
- # 修改:
- <body>
- <h1>编辑用户</h1>
- <form method="POST" novalidate>
- {% csrf_token %}
- {{ model_form.as_p }}
- <input type="submit" value="提交" />
- </form>
- </body>
Django【进阶】modelform的更多相关文章
- django进阶-modelform&admin action
先看效果图: 登陆admin后的界面: 查看作者: 当然你也可以定制admin, 使界面更牛逼 数据库表结构: app01/models.py from django.db import models ...
- django进阶-3
先看效果图: 登陆admin后的界面: 查看作者: 当然你也可以定制admin, 使界面更牛逼 数据库表结构: app01/models.py from django.db import models ...
- 02:Django进阶篇
目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...
- python 自动化之路 day 20 Django进阶/BBS项目【一】
一.django进阶 1.django orm 增删改查 1.1.创建表: 1 2 3 >>> from blog.models import Blog >>> b ...
- python web框架 Django进阶
django 进阶 基础中,一些操作都是手动创建连接的非主流操作,这样显得太low,当然也是为了熟悉这个框架! 实际中,django自带连接数据库和创建app的机制,同时还有更完善的路由系统机制.既然 ...
- Python之路,Day16 - Django 进阶
Python之路,Day16 - Django 进阶 本节内容 自定义template tags 中间件 CRSF 权限管理 分页 Django分页 https://docs.djangoproj ...
- Django中ModelForm应用
Django中ModelForm的应用 在传统中Form提交的POST的数据在服务器端获取时将不得不一一获取并验证数据的可靠性,但是使用django提供的Form时可简化该过程并提供相应的验证,同时D ...
- django进阶补充
前言: 这篇博客对上篇博客django进阶作下补充. 一.效果图 前端界面较简单(丑),有两个功能: 从数据库中取出书名 eg: 新书A 在form表单输入书名,选择出版社,选择作者(多选),输入完毕 ...
- django进阶-4
前言: 下篇博客写关于bootstrap... 一.如何在脚本测试django from django.db import models class Blog(models.Model): name ...
- Django进阶篇【1】
注:本篇是Django进阶篇章,适合人群:有Django基础,关于Django基础篇,将在下一章节中补充! 首先我们一起了解下Django整个请求生命周期: Django 请求流程,生命周期: 路由部 ...
随机推荐
- Kafka生产者各种启动参数说明
首先是启动一个生产者 final String kafkazk="localhost:9092"; String topic="testAPI"; Proper ...
- shell脚本如何获取当前时间
在shell脚本里常常需要获取系统时间来处理某项操作,linux的系统时间在shell里是可以直接调用系统变量的如: 获取今天时期:`date +%Y%m%d` 或 `date +%F` 或 $(da ...
- Android四大组件之Activity & Fragement(续)
1.Activity和Fragment的异同. Activity是UI界面交互的主体,而fragment是这个主体上的元素. 一个activity可以包含0到n个fragment. fragment可 ...
- SQL 临时表或表变量替代游标(转)
1.如果表没有自动增长的标识列(int) 使用临时表 SELECT IDENTITY(int) NewID ,.. INTO #tmp FROM YouTable 2.表有标识列 使用表变量 INSE ...
- 【BZOJ1001】狼抓兔子(平面图转对偶图,最短路)
[BZOJ1001]狼抓兔子(平面图转对偶图,最短路) 题面 BZOJ 洛谷 题解 这题用最小割可以直接做 今天再学习了一下平面图转对偶图的做法 大致的思路如下: 1.将源点到汇点中再补一条不与任何线 ...
- BIOS和CMOS的区别
原文链接:https://www.cnblogs.com/boltkiller/articles/5732424.html 在日常操作和维护计算机的过程中,常常可以听到有关BIOS设置和CMOS设置的 ...
- LCA的倍增算法
LCA,即树上两点之间的公共祖先,求这样一个公共祖先有很多种方法: 暴力向上:O(n) 每次将深度大的点往上移动,直至二者相遇 树剖:O(logn) 在O(2n)预处理重链之后,每次就将深度大的沿重链 ...
- DotNet,PHP,Java的数据库连接代码大全(带演示代码)
C#数据库连接字符串 Web.config文件 <connectionStrings> <!--SQLServer数据库连接--> <add name="con ...
- 基于epoll封装的事件回调miniserver
epoll技术前两节已经阐述过了,目前主要做一下封装,很多epoll的服务器都是采用事件回调方式处理, 其实并没有什么复杂的,我慢慢给大家阐述下原理. 在networking.h和networking ...
- dmsg命令使用
http://note.youdao.com/noteshare?id=6771284da9f10ac35652907898d63141