0

私の状況は次のとおりです。

CMS である django アプリがあり、この 1 つのアプリがページ コンテンツとメニューを生成します。

すべてのページ コンテンツを生成する「デフォルト」ビューがあります。メイン モデルのフィールドの 1 つは、設定に応じてページの表示を制限するように設計されています。

  • 「内部」(ネットワーク上のユーザーに限定)、
  • 'worldwide' (www で表示可能) であり、さらに値を追加したいと思います。
  • サイトにログインしているユーザーのみに閲覧を制限します。

@login_required は関数全体でのみ機能するため、機能するとは思いません。

作成者または編集者が、特別な関数をコーディングするのではなく、このフラグを設定できるようにする必要があります。また、ページが「内部」から「安全」、そして「全世界」に移行する場合があります。したがって、理想的には、URL は同じままにする必要があります。

これについて最善の方法は何ですか?前もって感謝します... パトリック

4

1 に答える 1

0

オブジェクトにフラグを設定したいので、ビュー内に入るまでフラグを読み取れないと想定しています(つまり、セッションなど、リクエストオブジェクトからアクセスできるものにフラグを保存しません)であるため、カスタム デコレータは除外されます。次のように、少し粗いが実行可能なものを使用することを選択できます。

if (val=="internal" and inrange(request.META['REMOTE_ADDR'])) or (val=="secure" and  request.user.is_authenticated()) or val=="worldwide":
     return render_to_response .... etc.
else:
     return HttpResponseForbidden()

モデル値を代入し、inrange 関数を自然に記述します。

ただし、より洗練されたアプローチは、カスタム ミドルウェアを作成し、process_view() 関数を使用することです。詳細については、ドキュメントを参照してください。

于 2012-10-11T06:56:38.563 に答える