3

djangoテンプレートのurlテンプレートタグ内にタグを埋め込むにはどうすればよいですか?

ジャンゴ 1.0、パイソン 2.5.2

views.py で

def home_page_view(request):
    NUP={"HOMEPAGE": "named-url-pattern-string-for-my-home-page-view"}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

home_page.html には、次の

NUP.HOMEPAGE = {{ NUP.HOMEPAGE }}

として表示されます

NUP.HOMEPAGE = named-url-pattern-string-for-my-home-page-view

そして、パターンという名前の次のURLが機能します(期待どおり)、

url template tag for NUP.HOMEPAGE = {% url named-url-pattern-string-for-my-home-page-view %}

と表示されます

url template tag for NUP.HOMEPAGE = /myhomepage/

ただし、次のよう{{ NUP.HOMEPAGE }}に a 内に埋め込まれている場合{% url ... %}

url template tag for NUP.HOMEPAGE = {% url {{ NUP.HOMEPAGE }} %}

これにより、テンプレートの構文エラーが発生します

TemplateSyntaxError at /myhomepage/
Could not parse the remainder: '}}' from '}}'
Request Method: GET
Request URL:    http://localhost:8000/myhomepage/
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: '}}' from '}}'
Exception Location: C:\Python25\Lib\site-packages\django\template\__init__.py in __init__, line 529
Python Executable:  C:\Python25\python.exe
Python Version: 2.5.2

{% url {{ NUP.HOMEPAGE }} %}実行時に に解決{% url named-url-pattern-string-for-my-home-page-view %} され、 として表示されることを期待していまし/myhomepage/た。

埋め込みタグは django でサポートされていませんか?

これを機能させるために、埋め込みタグをサポートするカスタム URL テンプレート タグを作成することは可能ですか?

{% url {{ NUP.HOMEPAGE }} %}

4

3 に答える 3

2

代わりに、最終的な URL をテンプレートに渡してみてはいかがでしょうか?

このようなもの:

from django.core.urlresolvers import reverse

def home_page_view(request):
    NUP={"HOMEPAGE": reverse('named-url-pattern-string-for-my-home-page-view')}    
    variables = RequestContext(request, {'NUP':NUP})
    return render_to_response('home_page.html', variables)

次に、テンプレートで、NUP.HOMEPAGEURL 自体を指定する必要があります。

于 2008-10-31T21:00:30.633 に答える
0

Djangoにバグを投稿しました。彼らは自分たちの側でこれを修正できるはずです。

http://code.djangoproject.com/ticket/10823

于 2009-04-15T13:28:15.153 に答える
0

それはダイナミックすぎるようです。あなたはするはずです

{% url named-url-pattern-string-for-my-home-page-view %}

そしてそのままにしておきます。URL タグの名前を動的に入力するのは、率直に言って少し奇妙です。

多数の異なる URL タグのいずれかを使用する場合は、次のようにする必要があります。

{% if tagoption1 %}<a href="{% url named-url-1 %}">Text</a>{% endif %}

繰り返しますが、あなたが達成しようとしている動的なことは少し奇妙に思えます。

ページの「ファミリー」または「クラスター」のようなものがある場合、おそらく個別のテンプレート ディレクトリがこれをより適切に管理する方法になるでしょう。ページの各クラスターは、基本テンプレートから継承し、このナビゲーション機能のような小さなものをオーバーライドして、クラスター内のすべてのページを同じように見せることができますが、「ローカル ホーム」のナビゲーションには 1 つの違いがあります。

于 2008-10-31T20:59:47.170 に答える