質問

Django のテンプレート言語では、次のように使用できます。 {% url [viewname] [args] %} パラメーターを使用して特定のビューへの URL を生成します。Python コードで同じことをプログラム的に行うにはどうすればよいでしょうか?

必要なのは、各項目に名前、URL、およびアクティブなフラグ (現在のページかどうか) が含まれるメニュー項目のリストを作成することです。これは、テンプレート言語よりも Python でこれを実行する方がはるかに簡単だからです。

役に立ちましたか?

解決

同様のものを使用する必要がある場合は、 {% url %} コード内の template タグでは、Django が提供する django.core.urlresolvers.reverse(). 。の reverse 関数には次のシグネチャがあります。

reverse(viewname, urlconf=None, args=None, kwargs=None)

https://docs.djangoproject.com/en/dev/ref/urlresolvers/

他のヒント

私は 2 つの異なるアプローチを使用しています models.py. 。1つ目は、 permalink デコレータ:

from django.db.models import permalink

def get_absolute_url(self): 
    """Construct the absolute URL for this Item."""
    return ('project.app.views.view_name', [str(self.id)])
get_absolute_url = permalink(get_absolute_url)

電話をかけることもできます reverse 直接:

from django.core.urlresolvers import reverse

def get_absolute_url(self): 
    """Construct the absolute URL for this Item."""
    return reverse('project.app.views.view_name', None, [str(self.id)])

使用することに注意してください reverse() urlconf モジュールに 100% エラーがなく、処理できることが必要です - いいえ ViewDoesNotExist エラーかそこら、そうでないと恐ろしいことになる NoReverseMatch 例外 (テンプレート内のエラーは通常、通知なしで失敗し、 None).

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top