Django ModelForm添加CSS类报错:URLInput未定义如何解决?
修复Django ModelForm中的NameError: URLInput未定义问题
嘿,这个错误我见得挺多的,原因很简单——你在代码里用了URLInput和TextInput这两个表单组件,但压根没把它们导入到文件里!Django的这些表单小部件(widgets)都藏在django.forms.widgets模块里,或者你也可以通过forms主模块直接引用它们。
这里有两种简单的修复方式,选哪种看你个人习惯:
方式一:单独导入所需的Widget组件
在文件顶部添加对URLInput和TextInput的导入语句,这样就能直接在代码里使用它们的类名了:
from django import forms from django.forms.widgets import URLInput, TextInput # 新增这行导入 from .models import MiniUrl class AddUrl(forms.ModelForm): class Meta: model = MiniUrl fields = ['long_url', 'pseudo'] widgets = { 'long_url': URLInput(attrs={'class': 'user-input'}), 'pseudo': TextInput(attrs={'class': 'user-input'}), }
方式二:通过forms模块直接引用Widget组件
如果你不想额外增加导入语句,也可以直接用forms.XXX的方式调用这些组件,这样更清爽:
from django import forms from .models import MiniUrl class AddUrl(forms.ModelForm): class Meta: model = MiniUrl fields = ['long_url', 'pseudo'] widgets = { 'long_url': forms.URLInput(attrs={'class': 'user-input'}), # 用forms.URLInput替代URLInput 'pseudo': forms.TextInput(attrs={'class': 'user-input'}), # 用forms.TextInput替代TextInput }
小提醒
要注意Django的表单组件都是驼峰命名的,别写成小写的urlinput或者textinput,那样同样会触发类似的NameError哦。
内容的提问来源于stack exchange,提问作者Garde Des Ombres
相关产品推荐
相关产品推荐

