3

URL テンプレート タグの代わりに get_absolute_url 呼び出しを使用する利点を理解したいと思います。

get_absolute_url:

class Project(models.Model):

   @permalink
   def get_absolute_url(self):
       return ('view_project', (), {'project_id': self.pk})

<a href="{{ project.get_absolute_url }}"> {{ project.name }}</a>

URL テンプレート タグ:

<a href="{% url 'view_project' project.pk %}"> {{ project.name }}</a>

ご協力ありがとうございました、

フリオ

4

2 に答える 2

2

唯一の明らかな利点は、すべてのテンプレートを書き直さなくても、そのモデルの URL の名前を変更できることです。また、get_absolute_url関数を定義すると (ただし、テンプレートで使用する必要はありません)、View on siteDjango の管理画面にボタンを追加したり、クラスベースのモデルフォーム ビューにフォールバック成功 URL を提供したりするなど、いくつかの追加の利点が得られます。

ただし、get_absolute_url一般的に、モデルの URL は現在進行中の議論のポイントです

于 2013-08-13T13:07:39.593 に答える
0

テンプレート内のすべての URL を 1 つの場所、つまりモデル内にのみ「配置」すると、管理しやすくなります。そのため、オブジェクトに関連する URL が必要になるたびに、get_absolute_url を使用します。

ただし、Django 1.5の @permalinkは非推奨であるため、代わりにreverse()を使用する必要があります。ドキュメントを確認してください

于 2013-08-13T13:10:33.813 に答える