Django获取Model字段名及verbose_name的方法与Forms组件配置详解
本文介绍如何在Django中通过apps.get_model获取Model的字段名及verbose_name,并展示Forms组件中Widget参数配置、CSS类添加及自定义错误提示的实现方式,帮助开发者优化表单渲染与验证逻辑。
Django Model字段名与verbose_name获取方法
首先定义一个Django模型类,例如名为Game的模型,其中包含name和gameid两个CharField字段,并分别设置了verbose_name为'游戏名称'和'游戏id'。
class Game(models.Model):
name = models.CharField(u'游戏名称',max_length=30)
gameid = models.CharField(u'游戏id',max_length=20)
def __str__(self):
return self.name
接下来,通过Django提供的apps模块获取该模型对象,并遍历其_meta.fields属性,提取每个字段的name和verbose_name存入字典返回。
from django.apps import apps
def getmodelfield(appname,modelname):
modelobj = apps.get_model(appname,modelname)
field_dic={}
for field in modelobj._meta.fields:
field_dic[field.name] = field.verbose_name
print('字段类型:',type(field).__name__) #返回的是‘charfield','textfield',等这些类型
return field_dic
注意:调用时需传入正确的appname(模型所在应用名)和modelname(模型类名)。
若在视图函数中调用get_model_field('Game_app', 'Game'),将返回包含字段名与中文名称的字典。
{'gameid': '\u6e38\u620fid', 'id': 'ID', 'name': '\u6e38\u620f\u540d\u79f0'}
可通过for循环遍历该字典,输出每个字段名及其对应的verbose_name。
gameid : 游戏id
id : ID
name : 游戏名称
Django Forms组件配置与错误提示处理
补充知识:Django Forms组件支持通过widgets参数配置输入框样式、添加CSS类及自定义错误提示信息。
Forms组件可渲染不同类型的输入标签,如文本框、密码框等。
例如,可配置为密码型或邮箱型输入框,以满足不同场景需求。
from django.forms import widgets
# 自定义格式方法
class UserForm(forms.Form):
'''最小4位 且 模式:普通文本'''
name = forms.CharField(min_length=4, label='姓名:',widget=widgets.TextInput())
'''最小4位 且 模式:密码模式'''
pwd = forms.CharField(min_length=4, label='密码:', widget=widgets.PasswordInput())
在渲染时,可通过widgets参数传入attrs字典,为生成的HTML标签添加class属性(如'form-control'),便于与Bootstrap等前端框架集成。
from django.forms import widgets
'''在widgets.类型(加入字典形式的标签信息)'''
class UserForm(forms.Form):
# 模式:普通文本 标签加上:class="form-control"
name = forms.CharField(widget=widgets.TextInput(attrs={'class': 'form-control'}))
# 模式:密码模式 标签加上:class="form-control"
pwd = forms.CharField(widget=widgets.PasswordInput(
attrs={'class': 'form-control'}
))
可通过error_messages参数自定义字段验证失败时的错误提示信息。
在视图层,需实例化Form类并传递给模板,确保表单数据正确绑定。
from django.forms import widgets
'''追加error_messages参数 dict型式'''
class UserForm(forms.Form):
# 模式:required=不能为空的提示
name = forms.CharField(min_length=4, label='姓名:',
error_messages={
'title': {'required': '不能为空哦亲亲'},
'price': {'invalid': '格式错误(提示方法)'},
# '字段': {'错误类型': '提示信息'}
})
# 模式:invalid=格式错误
pwd = forms.CharField(min_length=4, label='密码:',
error_messages={
'title': {'required': '不能为空哦亲亲'},
'price': {'invalid': '格式错误(提示方法)'},
# '字段': {'错误类型': '提示信息'}
})
在HTML模板中,可通过{{ field.errors.0 }}获取并展示每个字段的第一个错误信息。
<form action="" method="post" novalidate="novalidate">
<!--要自定义提示必须 novalidate="novalidate"-->
{% csrf_token %}
{% for field in form %}
<p>
{{ field.label }}{{ field }} <span>{{ field.errors.0 }}</span>
<!--错误信息固定:field.errors.0 -->
</p>
{% endfor %}
<p><input type="submit" value="提交"></p>
</form>
以上即为Django获取Model字段名及verbose_name的完整方法,以及Forms组件中样式与错误提示的配置示例,供参考使用。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













