Django报错:module 'django.forms.forms' has no attribute 'HiddenInput' 求助
嘿,这个问题我之前也踩过坑!根源其实出在你的导入方式上,咱们一步步理清楚:
问题原因
你写的from django.forms import ModelForm, forms里,第二个forms导入的是django.forms.forms这个子模块——它只负责承载表单的基础类(比如Form),而像HiddenInput、Textarea这类表单组件(widgets),根本不在这个子模块里,它们都藏在django.forms.widgets模块中。所以当你调用forms.HiddenInput()时,自然会找不到这个属性啦。
另外还有个小细节要提醒你:你写的forms.TextArea()是错的,Django里这个组件的正确名称是Textarea(最后一个字母a是小写),不改的话之后还会报新错误哦。
两种修正方案
方案一:改用顶层forms模块导入
直接从django导入整个forms模块,它会自动包含所有widgets组件,用起来更省心:
from django import forms from django.forms import ModelForm from comments.models import Comment class CommentForm(ModelForm): class Meta: model = Comment fields = ['video', 'text'] widgets = {'video': forms.HiddenInput(), 'text': forms.Textarea()}
方案二:单独导入widgets模块
如果想保持原有导入结构,直接导入widgets模块来调用组件就行:
from django.forms import ModelForm, widgets from comments.models import Comment class CommentForm(ModelForm): class Meta: model = Comment fields = ['video', 'text'] widgets = {'video': widgets.HiddenInput(), 'text': widgets.Textarea()}
两种方案都能解决你的问题,选哪种全看你的代码习惯~
内容的提问来源于stack exchange,提问作者Oblivionkey3
相关产品推荐
相关产品推荐

