1

There are URLs which I use only for redirecting a user after a successful operation. (e.g. Thank you page after submitting feedback).

Problem is that these pages can be accessed directly.

Is there a way to prevent this?

Thanks

4

4 に答える 4

3

URL はビューによって処理されるため、ビューが最後に実行したことがログイン ユーザーの操作が成功した場合にのみビューが満足することを確認してください。それ以外の場合は、Http404 を発生させます。

ビューでユーザーのセッション変数を確認するだけでこれを行うことができます。ロジックは次のようになります。

shop.html: ユーザーが「投稿」を押して buy.html

buy.html のビューはユーザーに請求し、セッションで「何かを購入しました」を設定し、thanks.html にリダイレクトします

ビューの thanks.html は、「何かを購入した」セッション変数をチェックし、それ以外の場合は 404 に設定されている場合はクリアし、成功した場合の応答にテンプレートをレンダリングします。

于 2012-08-13T22:26:57.217 に答える
1

ユーザーが特定のGETパラメーターを指定しない場合は、リダイレクトなどの非常に単純な操作をビューで実行できます。

if not request.GET.get('show', False):
     # do redirection
else:
     # render the page

したがって、URLにアクセスできるのは/my-url/?show=true

于 2012-08-13T23:49:41.983 に答える
1

これを行うためのメッセージフレームワークをお勧めします。

于 2012-08-13T22:48:16.230 に答える