1

複数のページでフォームをレンダリングできるように、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 を介してユーザーをフォームに渡すにはどうすればよいですか? ありがとう :)

4

1 に答える 1

1

ドキュメントには、引数をカスタム タグに渡す方法が詳しく説明されています。

もう 1 つのオプションは、コンテキストを認識できるようにタグを調整することです。

于 2012-12-18T08:46:15.867 に答える