猿问

为什么 Django 显示 KeyError?

我一直在查看 Django 文档中有关如何将 CSS 类添加到模型表单输入的示例。但是,当我使用该解决方案时,Django 引发了一个 KeyError,我无法真正查明来源,因为调试屏幕显示的代码行是模板中完全不相关的 CSS 类。


解决方案:


def __init__(self, *args, **kwargs):

        super().__init__(*args, **kwargs)

        self.fields['title', 'content', 'category'].widget.attrs.update({'class': 'form-control'})

        self.fields['content'].widget.attrs.update(size='100', height='50')

错误信息:


KeyError at /new/


('title', 'content', 'category')


Request Method:     GET

Request URL:    http://localhost:8000/new/

Django Version:     2.1.7

Exception Type:     KeyError

Exception Value:    


('title', 'content', 'category')


Exception Location:     /home/bob/python-virtualenv/blog/bin/blog/posts/forms.py in __init__, line 11

提前致谢!


牧羊人nacy
浏览 704回答 1
1回答

SMILET

您不能以这种方式使用多个键:self.fields['title', 'content', 'category']您必须分别查找它们:self.fields['title']self.fields['content']...或者在你的代码中:for key in ['title', 'content', 'category']:    self.fields[key].widget.attrs.update({'class': 'form-control'})请注意,在 Python 中允许使用元组作为字典中的键:>>> a = {}>>> a['some','tuple'] = 'value'>>> a{('some', 'tuple'): 'value'}
随时随地看视频慕课网APP

相关分类

Python
我要回答