0

I have a view that perfectly fits the ListView in Django. Like this:

url(r'^$',
    ListView.as_view(
        queryset=Poll.objects.order_by('-pub_date')[:5],
        context_object_name='latest_poll_list',
        template_name='polls/views/index.html')),

However I on the page of the view I also would like to display content from another model. This model contains only one row of data. It's sitewide and contains the footer-text page-title etc.

What's the best solution for this? Ideally I'd like to keep the generic-model approach.

4

1 に答える 1

0

この問題を解決する方法はいくつかあります。ビューは間違いなく正しい場所ではありません。

テンプレートタグテンプレートタグ 使用する1つの方法は、ミニビューとして使用することです。別のモデルからデータを要求する場合でも、含まれているテンプレートをレンダリングする場合でも。

テンプレートタグにパラメータを渡すこともできるため、コンテキストによってカスタマイズできます。

コンテキストプロセッサ より簡単な情報については、コンテキストプロセッサが適切に機能します。データはグローバルであり、すべてのリクエストの速度を低下させる可能性があるため、データが複雑になることはありません。

余談ですが、私はあなたの1列モデルにも質問します。私の推測では、これはユーザーが編集できるようにするためです。ユーザーがそれにアクセスする場合は、それを台無しにするあらゆる可能な方法を期待してください。たとえば、行を追加します。ユーザーが編集可能な設定を管理するためのDjangoアプリケーションがいくつかあります。データが頻繁に変更されない場合は、実際の設定にするか、テンプレートスニペットに入れて{%include%}します。

于 2012-09-18T00:48:38.167 に答える