我正在尝试通过django中的templatetag呈现表单,以便我可以在多个页面上呈现表单。但是,当我尝试渲染它时出现以下错误:
_ init_()至少需要2个参数(给定1个)。
我认为,这是因为模板标签没有将用户信息传递给表单。经过身份验证的用户应该是传递给表单的用户。
Forms.py:
class ExpressionForm(forms.ModelForm):
class Meta(object):
model = Expression
exclude = ('user',)
body = forms.CharField(widget=forms.Textarea(attrs={'rows': 2, 'cols': 19}), required=False, label=_('Body'))
def __init__(self, user, *args, **kwargs):
super(ExpressionForm, self).__init__(*args, **kwargs)
self.fields['expressiontype'].queryset = ExpressionType.objects.all()
self.fields['expressiontype'].required = True
在我的模板标签.py中:
@register.inclusion_tag('expressions/templatetags/express.html')
def express():
return {'form': ExpressionForm()}
如何通过templatetag将用户传递给表单?谢谢:))
答案 0 :(得分:1)
该文档详细说明了如何pass arguments into custom tags。
您的另一个选择是调整代码so it is aware of the context。