我已经尝试过以多种方式使用包含标记,例如将html文件分离并将其包含在基本模板(layout.html)中,甚至直接在基本模板(layout.html)中使用,我一直在得到
/的RecursionError
超过最大递归深度
在app / forms.py
中class UserSettingsForm(forms.ModelForm):
class Meta:
model = UserSettings
fields = ['theme_color','text_color']
widgets = {
'theme_color':forms.Select(attrs={'class':'form-control'}),
'text_color':forms.Select(attrs={'class':'form-control'})
}
error_messages = {
NON_FIELD_ERRORS : {
'unique_together': "%(model_name)s's %(field_labels)s are not unique.",
}
}
在app / templatetags / theme.py中
@register.inclusion_tag('layout.html')
def settings_form():
set_form = UserSettingsForm()
return {'set_form':set_form}
在layout.html
中{% load theme %}
...
<form action="{% url 'set_settings' %}" method="post">
{% csrf_token %}}
{% settings_form %}
{{set_form}}
</form>
我希望将表单显示在该layout.html扩展到的所有页面上,因此从视图发送表单是不可能的。
我一直在听关于RequestContext的消息,但是我不知道如何使用它来呈现它。如果您知道,请描述在何处创建此新文件以实现此功能以及如何执行。
答案 0 :(得分:0)
在一个我尝试使用context_processors的朋友的帮助下,我通过在context.py
中创建一个app
文件并编写一个简单的2行代码将该表单添加到context_processors中
def settings_form(request):
return {'set_form': UserSettingsForm()}
,然后将app.context.settings_form
添加到设置中的context_processors中。
现在,我可以轻松呈现表单了。花了很多时间才了解2行代码。 Python确实比我想象的要容易。