问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django怎么重定义label标签(2023年最新解答)

发布网友 发布时间:2024-09-15 09:46

我来回答

1个回答

热心网友 时间:2024-10-20 13:04

导读:很多朋友问到关于django怎么重定义label标签的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

怎么添加label标签。

工具栏里面有一个A字,单击它,然后用鼠标在窗体上拖曳就可以了

djangolistview怎么使用post方法

方法/步骤

一:编辑:forms.py

#coding=utf-8#指定编码,要不文件中出现的中文会报编码错误,因我代码中出现了中文

fromdjangoimportforms#从django中导入forms模块

classHostAddForm(forms.Form):#定义HostAddForm的类(forms.Form)是固定写法,照写就是了

ip=forms.IPAddressField(label='主机IP')#定义ip文本框,如效果图中的‘主机IP’,IPAddressField是说明IP字段,与models.py上定义的一致,label='主机IP',是定义label标签,如以下效果图

port=forms.CharField(max_length=5,label='端口')#定义端口文本框,长度最大为5

要设置哪个字段为可不写,lamp兄弟连用required=False,如cpumun=forms.CharField(max_length=50,required=False,label='CPU核数')

二:编辑view.py

defhostadd(request):#定义hostadd

ifrequest.method=="POST":#判断是否使用了POST方法

fr=HostAddForm(request.POST)#如果是使用了POST方法,即就绑定到fr变量,HostAddForm是forms.py上定义好的类字段,要一致

iffr.is_valid():#判断表单上传进来的数据是否有效,如有效就执行下面的语句

printfr.cleaned_data['ip']#这里是指可执行的代码,我这里仅仅是打印出这个IP地址而已,在写程序的时候,这里就可以替换成你要写的代码段了

returnHttpResponse("OK")#执行完毕后,返回成功字样

else:#如果不是使用POST方法,那么执行以下代码段

fr=HostAddForm()#定义HostAddForm()给变量fr,其实这里是空值来的,

returnrender_to_response('hostadd.html',locals())#最后把所有变量返回给模板hostadd.html,在hostadd.html上把这些表单显示出来

如果一个Form实体的数据是合法的,lampbrother它就会有一个可用的cleaned_data属性。这是一个包含干净的提交数据的字典,我们要报取数据的时候,就用这个,如上面代码中的printfr.cleaned_data['ip']

三:编辑模块文件hostadd.html

formaction=""method="post"

{{fr}}inputtype="submit"value="提交"

/form

{{fr}}标签会把所有的表单内容都显示出来,而且是用我们在forms.py上定义好的label标签,我们也可以不这样设置,在hostadd.html上自定义显示吧,如下

formaction=""method="post"

IP地址:{{fr.ip}}/br

IP端口:{{fr.port}}/br

inputtype="submit"value="提交"

/form

这里的fr.ipfr.port,ip,port跟上面forms.py上的字段名是对应的

如果要检测ip文本提交的数据是否合法,lamp兄弟连可以用{{fr.ip.errors}}来获取,如果不符合类型,会显示相应的提示:

4

四:编辑urls.py文件

(r'^hostadd.html$',hostadd),

效果:

5

提升:

给某个字段加上默认值,如我在IP字段上,写上默认为192.168.1.

fromdjangoimportforms

class

GAE上试用Django表单验证框架,如何更改表单对应字段的标签

Django的表单验证框架可以从数据模型自动生成HTML表单,还可在与数据存储区交互的同时无缝处理通过表单输入的信息。要在GoogleAppEngine上使用DjangoForms,参考这篇文章在使用过程中会遇到一个问题,比如你在定义一个数据模型Book,有两个字段name和pub_date分别表示书名和出版日期。如果使用DjangoForms自动生成Book的输入表单,表单呈现大体如下:Name:PubDate:问题是想把PubDate显示为更有意义的中文出版日期,该如何实现?

研究半天Django官方文档中关于Forms的部分,一点头绪都没有,只能放狗了,在反复尝试了各种关键字组合后,搜索djangoforms.Modelform终于找到了

DjangoModelForm:addinganaliastoafield

,顺便收藏一下StackOverflow:acollaborativelyeditedquestionandanswersiteforprogrammers–regardlessofplatformorlanguage,好像很有专业的样子。

其中第一种解决办法是利用原生的Django的方法:

我是怎么做到使用django动态定义表单的

fromdjango.utils.translationimportugettext_lazyas_

fromdjangoimportforms

fromdjango.forms.formsetsimportBaseFormSet

fromdjango.forms.fieldsimportFileField

fromdjango.forms.utilimportValidationError

fromdjango.shortcutsimportrender_to_response

fromdjango.contrib.formtools.wizardimportFormWizard

fromddtcms.office.equipment.modelsimportEquipment,Characteristic,CharacteristicValue

classEquipmentForm(forms.ModelForm):

classMeta:

model=Equipment

classCharacteristicValueForm(forms.Form):

defclean(self):

a=self.fields

s=self.data

self.cleaned_data={}

#下面的这一段for是从django的forms.py中的full_clean中复制来的

forname,fieldinself.fields.items():

#value_from_datadict()getsthedatafromthedatadictionaries.

#Eachwidgettypeknowshowtoretrieveitsowndata,becausesome

#widgetssplitdataoverseveralHTMLfields.

value=field.widget.value_from_datadict(self.data,self.files,self.add_prefix(name))

try:

ifisinstance(field,FileField):

initial=self.initial.get(name,field.initial)

value=field.clean(value,initial)

else:

value=field.clean(value)

self.cleaned_data[name]=value

ifhasattr(self,'clean_%s'%name):

value=getattr(self,'clean_%s'%name)()

self.cleaned_data[name]=value

exceptValidationError,e:

self._errors[name]=self.error_class(e.messages)

ifnameinself.cleaned_data:

delself.cleaned_data[name]

#cl=self.cleaned_data

#debug()调试用的,查看cl的值,主要是看self.cleaned_data的值,如果return了,就看不到了

returnself.cleaned_data

classEquipmentCreateWizard(FormWizard):

defdone(self,request,form_list):

returnrender_to_response('equipment/done.html',

{

'form_data':[form.cleaned_dataforforminform_list],

})

defget_form(self,step,data=None):

"HelpermethodthatreturnstheForminstanceforthegivenstep."

form=self.form_list[step](data,prefix=self.prefix_for_step(step),initial=self.initial.get(step,None))

ifstep==1:

ifdata:

cg=data.get('0-category',1)

cs=Characteristic.objects.all().filter(category__id=cg)

forcincs:

form.fields['Characteristic-'+str(c.id)]=forms.CharField(label=c.name)

g=form.fields

#debug()

returnform

#从wizard.py中复制过来进行更改的.

defrender(self,form,request,step,context=None):

"RendersthegivenFormobject,returninganHttpResponse."

old_data=request.POST

prev_fields=[]

ifold_data:

hidden=forms.HiddenInput()

#CollectalldatafrompreviousstepsandrenderitasHTMLhiddenfields.

foriinrange(step):

old_form=self.get_form(i,old_data)

hash_name='hash_%s'%i

prev_fields.extend([bf.as_hidden()forbfinold_form])

prev_fields.append(hidden.render(hash_name,old_data.get(hash_name,self.security_hash(request,old_form))))

ifstep==1:

cg=old_data.get('0-category',1)

cs=Characteristic.objects.all().filter(category__id=cg)

forcincs:

form.fields['Characteristic-'+str(c.id)]=forms.CharField(label=c.name)

g=form.fields

#debug()

ifstep==2:

debug()

returnsuper(EquipmentCreateWizard,self).render(form,request,step,context=None)

defget_template(self,step):

return'equipment/wizard_%s.html'%step

EquipmentCreateWizard其实也可以放在views.py中,而且我觉得更合理一点.

在EquipmentCreateWizard中,我试着修改过process_step函数,但是得不到正确的结果,后来修改了get_form,都是想从django的formtools的wizard.py中复制过来再进行修改的.

get_form的修改也没有得到正确的结果.后来就修改render函数,在第2步的时候,我将动态参数个数显示出来了.但是到最后结束done的环节,取得的formdata中,第二个form没有数据,就是一个空的{},

于是我又重新修改get_form函数,无非就是判断是不是第二步,然后给第二个form动态添加几个field:

1

2

3

4

5

6

7

ifstep==1:

cg=old_data.get('0-category',1)

cs=Characteristic.objects.all().filter(category__id=cg)

forcincs:

form.fields['Characteristic-'+str(c.id)]=forms.CharField(label=c.name)

g=form.fields

#debug()

这段代码在get_form和render中都有,都是判断是不是第2步,然后就根据第1步中选择的设备的分类来查询到具体的分类,再根据分类来获取该种分类的设备有哪些参数,然后根据参数个数修改form的参数field的个数.

'Characteristic-'+str(c.id)是用来以后保存数据的时候,split这个字符串,得到参数的id,并在参数值表中保存Characteristic-1,Characteristic-2...的value.

g=form.fields

#debug()

用来断点查看参数field有多少个,是否修改成功.

=========================

1

2

3

4

5

6

7

8

9

fromdjango.conf.urls.defaultsimport*

fromddtcms.office.equipment.formsimportEquipmentForm,CharacteristicValueForm,EquipmentCreateWizard

urlpatterns=patterns('ddtcms.office.equipment.views',

url(r'^$','index',name="equipment_index"),

url(r'^add/$','equipment_create',name="equipment_create"),

url(r'^add-by-wizard/$',EquipmentCreateWizard([EquipmentForm,CharacteristicValueForm]),name="equipment_create_by_wizard"),)

以上代码,csdnbolg自动过滤了$符号,我加了上去,可能有不对的地方.

==========================

wizard_0.html

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{%blockcontent%}

h2添加/修改设备向导/h2

p第{{step}}步,共{{step_count}}步./p

p填写设备基本情况/p

formmethod="POST"action=""{%csrf_token%}

table

{{form}}

/table

inputtype="hidden"name="{{step_field}}"value="{{step0}}"/

{{previous_fields|safe}}

inputtype="submit"value="Submit"/

/form

{%endblock%}

===================

wizard_1.html

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

{%blockcontent%}

h2添加/修改设备向导/h2

p第{{step}}步,共{{step_count}}步./p

p填写设备参数,如果没有要填写的内容,请直接点击确定./p

formmethod="POST"action=""{%csrf_token%}

table

{{form}}

/table

inputtype="hidden"name="{{step_field}}"value="{{step0}}"/

{{previous_fields|safe}}

inputtype="submit"value="Submit"/

/form

{%endblock%}

====================

done.html

1

2

3

4

5

6

7

8

{%blockcontent%}

h2添加/修改设备向导/h2

p您已经成功添加了一个设备./p

{{form_data}}

{%endblock%}

============

还可以用另外的form来实现formwizard,就是第一个form1,主要用来让用户选择设备的分类,form2就根据前面的来动态生成参数的表单.原理是一样的.

还有就是写2个view来模拟formwizard,第一个view增加一个设备,第二个view带设备id这个参数即可,可以很有效的增加设备的参数.

如何更新Django的ManyToMany字段

更新Django的ManyToMany字段:

1、在创建一个新的的时候:

p1=Post.objects.create(title=title,content=content,pub_date=pub_date,author=author)

p1.label.add(p)

其中label是ManyToMany字段。

2、更新的时候:

p1=Post.objects.filter(id=num).save(title=title,content=content,pub_date=pub_date,author=author)

3、如果此时误用update,则成了批量更新,会发生错误。

如何使用django-ckeditor添加自定义的plugins

添加“插入代码”的按钮,起名为code。在ckeditor/plugins下新建文件夹code,在code文件夹里加入一个小图片如code.gif,然后在code文件夹里新建plugin.js文件,内容如下:

01CKEDITOR.plugins.add(

02"code",

03{

04requires:["dialog"],

05lang:["en"],

06init:function(a)

07{

08a.addCommand("code",newCKEDITOR.dialogCommand("code"));

09a.ui.addButton(

10"Code",

11{

12label:"插入代码",

13command:"code",

14icon:this.path+"code.gif"

15});

16CKEDITOR.dialog.add("code",this.path+"dialogs/code.js");

17}

18}

19);

3.修改config.js来注册code插件。用如下代码替换config.js原来内容:

01C

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 双鱼座真实性格是什么 待人亲切言语平和,很招人待见的四个星座 iphone打开这个功能,秒变电子秤!看看你的手机型号是否支持? iphone电子秤在哪里 我喜欢木村拓哉歌曲歌词 我喜欢木村拓哉的歌曲歌词 岁月莫染君眉,意思? 英语四级、六级考试的合格、等级是如何划分的 六级听力109分能过吗? 清乾隆金嵌宝金瓯永固杯外形特点 ...锁屏输入密码时总是在旁边出现一个'好'字 这是怎么了 苹果4s设置密码怎么解不开锁为什么旁边出现一个好字 宝宝顽固湿疹怎么办 弥贝儿Q瓶值得入手吗? 儿童湿疹要改善体质的话是吃益根敏吗?还是敏仕通呢? 为什么入秋以后身体会发痒?拜托各位了 3Q 如何在数据透视表中统计重复项计数? 数据透视表怎么做才能不重复数据 数据透视表如何避免重复计算数值? 怎么在数据透视表中计数不重复的行? 辩证法的基本范畴有哪些? 景观生态学在园林规划建设中的应用是不是 属于环境工程论文范围_百度... 求几个古今中外有关“山外有山”的名人例子 有一句名言劝架的,人外有人山外有山,还是一山给一山高?求解释▽ 类似山外有山,楼外有楼的名言 27岁该不该结婚 27岁为啥不能结婚 27岁逢九真的不能结婚吗 网速1.0Gbps是多少兆的网? 宽带连接1.0gbps是什么意思。跟100.0mbps有什么区别 1.0Gbps是多少网 生日快乐的词语 描写生日快乐的语句 广州到恩施的火车到那个火车站坐车 祝微友生日快乐的词语 广州到恩施的火车开通了吗?有没有人坐过呢? 东莞东或广州火车站有没有直接到湖北恩施的火车? 有广州到恩施的火车吗 女士喝茶的礼仪 华为手机版本怎么回退? 鸿蒙怎么退回之前的版本? 2700霸道配置参数是什么?