1

知っている人がいたら教えてほしいです:

たとえば、ユーザーが入力するフォームがあり、送信すると、ページは「ありがとう」ページにリダイレクトされます。すべて正常に動作します。urls.py には、ページが存在することを示す次の行がありました。

url(r'^thankyou/$', 'render_form'),

しかし、URL mysite.com/thankyou/ を入力すると、「ありがとう」というページが表示されます...しかし、フォームを送信したときにのみ表示し、ユーザーが直接開こうとすると非表示にする必要があります。

助けてください。前もって感謝します!

4

1 に答える 1

3

リダイレクトする前に、フォーム処理ビューのセッションに何かを配置し、サンキュー URL で確認することができます。そこにない場合は、403 エラーを返します。何かのようなもの:

def form_handling_view(request):
    if request.POST:
    form = MyForm(request.POST)
        if form.is_valid():
            ... handle the form ...
            request.session['form_posted'] = True
            return redirect('thank_you')

def thank_you(request):
    if not request.session.pop('form_posted', False):
        return HttpResponseForbidden('not permitted')
    ... render thank_you page ...

私はpopthank_you で使用していることに注意して、何があってもセッションからキーが削除されるようにします。

于 2012-11-19T10:31:29.757 に答える