私はdjangoテンプレート/ビューを拡張する方法を探しています。djangoビュー/テンプレートを前方に見せる方法
私の最初の実装は、次の2つのモデル(clients/models.py
)から構成されています
class Client(models.Model):
...
class Address(models.Model):
client = models.ForeignKey(Client)
...
とそのかなり単純なテンプレート(clients/detail.html
):
{{client.name}}
Address: {{client.address.street}}, {{client.address.zipcode}} {{client.address.city}}
私のアプリケーションの成長に合わせて、新しいアプリが誕生しました。 '請求書 '。
それは(invoices/models.py
)、再び非常に簡単です:
class Invoice(models.Model):
client = models.ForeignKey(clients.models.Client)
...
今私のクライアントの詳細ビューには、請求書を表示する必要があるので、私は作成して、私の「請求書」アプリでclients/detail.html
をオーバーライドします。
今のところ良いです。
私は3番目のアプリ 'quotes'を作成しました。 私のクライアントのdetails-viewは引用符を表示する必要があります。
私が 'クライアント'にclients/detail.html
を作成すると、請求書を表示する能力が失われます。
「請求書」と「引用符」アプリが不自然なためです。
私の最初のアイデアは、サブビュークラス のようなものを作成し、「請求書」と「引用符」を拡張してどこかの実装を登録することでした。
テンプレートは次のようになります。
{{client.name}}
Address: {{client.address.street}}, {{client.address.zipcode}} {{client.address.city}}
{% for view in views %}
<h1>{{view.title}}</h1>
{{view.get_html}}
{% endfor %}
これは行くには良い方法であると私は私のサブビューを登録するためのadmin.site
様の実装を使用する必要がありますか? urls.py
でジャンゴ1 url
で
ちょっと、私は 'clients/detail.html'を '請求書'や '引用符'についての知識から解放したいと思っています。とにかくありがとうございます。これは良い練習です(+1) –
@moです。正確には、すべての '請求書'や '引用符'の知識は、メインの 'client'テンプレートに' include'するテンプレートに入ります。 –
しかし、別のアプリケーションを追加する場合、私は 'clients/detail.html' again.itを変更したくありません。このテンプレートをプロジェクト全体でオーバーライドするとオプションになる可能性があります。それはすべてのアプリを知っているからです... –