You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:57:45