Django系列之form渲染表单后css样式丢失
最通用的form写法
我们经常看各大网站上写这样的form写法
class SYSAdminPhysicalForm(forms.ModelForm):
'''
this form for idc's admin
'''
class Meta:
model = models.Machinepro
exclude = ["m_inside_ip","m_outside_ip","order"]
business_unit = forms.CharField(required=False,label="所属业务",disabled=True,)
def __init__(self, *args, **kwargs):
super(SYSAdminPhysicalForm, self).__init__(*args, **kwargs)
for field_name in self.base_fields:
field = self.base_fields[field_name]
if field_name in ["m_ipmi_user","m_ipmi_passwd"]:
field.widget.attrs.update({'class': 'form-control'})
else:
field.widget.attrs.update({'class': 'form-control',"disabled":True})
写完这个form后,你重启django后第一次通过浏览器打开这个form表单,你会发现css样式是丢失的,特别是我那个disabled属性,一旦丢失,别人就可以修改我的表单了,所以后果非常严重。所以需要采取下面的方法来纠正这个bug
方法1:__new__写法
init__是实例初始化执行,那么我们就改成实例化的时候执行,也就是使用__new
def __new__(cls, *args, **kwargs):
obj = super(SYSAdminPhysicalForm, cls).__new__(cls,*args, **kwargs)
for field_name in obj.base_fields:
field = obj.base_fields[field_name]
if field_name in ["m_ipmi_user","m_ipmi_passwd"]:
field.widget.attrs.update({'class': 'form-control'})
else:
field.widget.attrs.update({'class': 'form-control',"disabled":True})
方法2:fields 替换掉base_fields
这个最简单了,把base_fields直接用fields替换就解决了
def __init__(self, *args, **kwargs):
super(SYSAdminPhysicalForm, self).__init__(*args, **kwargs)
for field_name in self.fields:
field = self.fields[field_name]
if field_name in ["m_ipmi_user","m_ipmi_passwd"]:
field.widget.attrs.update({'class': 'form-control'})
else:
field.widget.attrs.update({'class': 'form-control',"disabled":True})
任选一种方法后,任凭django重启多少回,不管你第几次打开表单页面,都不会丢失css样式啦!
Django系列之form渲染表单后css样式丢失的更多相关文章
- 5.django笔记之form保存表单信息,动态select
作者:刘耀 一.使用form保存用户输入过的信息 场景:例如 如果用户注册,那么他输入n多个表单之后,那么他提交是时候,如果错误返回的时候,那么需要重新再输入表单内容.这样会影响用户体验,所以,使用f ...
- 利用ajaxSubmit()方法实现Form提交表单后回调
1. 背景 最近在工作中,需要实现网页端图片上传到FTP服务器的功能.上传文件是用Form表单提交数据的方法向后台传输文件流,在此遇到了一个问题:后台在处理完图片上传功能后,需要向前台回传是 ...
- Form提交表单后页面刷新不跳转的实现
<form action="" id="" method="post" target="nm_iframe"> ...
- flask用宏渲染表单模板时,表单提交后,如果form.validate_on_submit()返回的是false的可能原因
flask用宏渲染表单模板时,表单提交后,提交的内容符合DataRequired()校验, 但是form.validate_on_submit()返回的是False, 原因可能是表单模板中的<f ...
- jquery.validate和jquery.form配合实现验证表单后AJAX提交
基础代码其实很简单,之后一点一点扩充.最终代码写在最后. 表单: <form action="@Url.Action("AddColumns","Cont ...
- Django - 请求与响应、表单、中间件、上下文处理器
请求与响应篇 一.HttpRequest对象 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象.视图函数的第一个参数(request)是HttpRequest对象在djang ...
- ExtJs 第二章,Ext.form.Basic表单操作
1.认识Ext.form.Panel表单面板 Ext.form.field.CheckBox 复选框 checkboxfield Ext.form.CheckBoxGroup 复选框组 ...
- flask 在模板中渲染表单
在模板中渲染表单 为了能够在模板中渲染表单,我们需要把表单类实例传入模板.首先在视图函数里实例化表单类LoginForm,然后再render_template()函数中使用关键脑子参数form将表单实 ...
- struts2官方 中文教程 系列五:处理表单
先贴个本帖的地址,免得其它网站被爬去了struts2教程 官方系列五:处理表单 即 http://www.cnblogs.com/linghaoxinpian/p/6906298.html 下载本章 ...
随机推荐
- How Not to Crash #2: Mutation Exceptions 可变异常(不要枚举可变的集合)
How Not to Crash #2: Mutation Exceptions 可变异常html, body {overflow-x: initial !important;}html { font ...
- C#中Attribute和Property
XAML是XML派生而来的语言,所以很多XML中的概念在XAML中是通用的. 为了表示同类标签中的某个标签与众不同,可以给它的特征(Attribute)赋值,为特征值赋值的语法如下: 非空标签:< ...
- C++学习笔记(HelloWorld,类型和值)
现在有一个从控制台读取输入的小程序: #include "../std_lib_facilities.h" int main() { cout << "Ple ...
- 搭建自己的挂Q平台
准备工作: 在前篇[分享]免费建立自己的站点里面介绍了怎么申请免费域名和空间. 在这里[随记]Q号解除限制一波三折有我被挂Q工具坑苦的经历. 在网上(出处不明了,下载的包太多,非CSDN)下载到的免费 ...
- svn cleanup失败
今天用SVN的时候出现被锁定的情况,既不能更新代码也不能提交. 解决方法如下: 1. 在被锁定的文件夹上点右键,找到并点击Clean up菜单项 2. 在Cleanup对话框中勾选“Break loc ...
- 自适应瀑布型布局(手机,PC全兼容)
有个瀑布型的布局需求,于是找了下,网上大部分用jquery控件,界面太复杂,看起来很笨重,我需求比较简单,于是只能自己写 其实原理就是用cs 去控制,那么我们只需要把对应的界面去规划就行了,比如,我一 ...
- React Native常用第三方组件汇总--史上最全[转]
本文出处: http://blog.csdn.net/chichengjunma/article/details/52920137 React Native 项目常用第三方组件汇总: react-na ...
- [hbase] 查询数据
获取hbase数据 说说:count 'SOCIA:T_SOCIA_ALBUM_TALK'scan 'SOCIA:T_SOCIA_ALBUM_TALK',{LIMIT=>5}get 'SOCIA ...
- Q_UNUSED() 方法的使用
Q_UNUSED() 没有实质性的作用,用来避免编译器警告 //比如说 int testFunc(int a, int b, int c, int d) { int e; return a+b+c; ...
- Self20171218_Eclipse+TestNg HelloWorld
作为一个经典的入门例子,这里展示如何开始使用TestNG单元测试框架. 使用的工具 : TestNG 6.8.7 Maven 3 Eclipse IDE TestNG下载并安装 从这里 http:// ...