2017-07-03 9 views
0

私のdjangoプロジェクトでは、2つのモデルクラス - カテゴリ&があります。カテゴリはアクションの外部キーです(すべてのアクションはカテゴリに分類されます)。コンテキストオブジェクトをDjango URLテンプレートタグ引数として渡す方法

私のdjangoテンプレートの中で、コンテキストオブジェクトを{%url%}タグに渡して、Categoryの名前を引数として含む文字列を受け入れたいと考えています。だから、完璧な世界で私のDjangoのテンプレートは次のようにラインを持っているでしょう:

<form action="{% url 'actions' {{ category }} %}">

そして提出したときに、Djangoは以下のようにURLPATTERNにフォームをたどる:

url(r'^(?P<category_name>\w+)', views.actions, name='actions'),

しかし残念ながら、それはdoesnのテンプレートフィルタをテンプレートタグにネストすることができるように見えます。代わりに、私はURLタグ内のDjangoオブジェクトのForeignKeyを参照することができますか?あるいは、私のコードを構造化するための別の方法でしょうか?

+0

あなたの問題である何、あなたはそのカテゴリのオブジェクトの名前であるURLに文字列を渡す必要があります?それは...ですか? – zaidfazil

+0

はい、正確です。問題は、複数のカテゴリにわたって使用されるdjangoテンプレートなので、文字列はハードコード化できません(たとえば、{{category}}の代わりに 'Category_One'を入れることはできません。 'Category_Two'にアクセスしようとしていました) – Argonautic

+0

この質問は頻繁に出てくるので、なぜテンプレートタグ内で可変構文を使用する必要があると思うのかわかりません。 [url'タグのドキュメント](https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#url)にも変数を直接使用する例がいくつかあります。 –

答えて

2

コンテキスト変数がurl templatetagに直接使用されている:

<form action="{% url 'actions' category_name=category %}"> 
+0

ありがとうございます!このレスポンスは、私がコードで持っていた別のエラーを実現するようになりました(私は実際のオブジェクトの代わりにQuerySetを変数のカテゴリに渡していました)。この構文を使用することでこれを解決すると、問題は解決しました! – Argonautic

関連する問題