2015-05-07 75 views
0

成功提交表單後,我重定向到「成功」頁面,顯示「感謝」消息以及有關提交的一些信息。爲此,我將POST數據放入會話中,重定向到適當的URL,然後使用會話數據呈現模板。在POST後重定向並傳遞數據時重定向URL的持久性

但是,這意味着如果有人手動導航到'成功'網址,他們將看到從以前的表單提交「成功」消息。我如何防止這種情況發生?該表格在/register/處理。成功的提交被重定向到/register/success。我想要在瀏覽器中輸入/register/success/的人(未提交表單)查看錯誤頁面或其他內容。這怎麼處理?

urls.py

url(r'^register/$', views.register, name='register'), 
url(r'^register/success/$', views.registration_success, name='registration_success'), 

views.py

def register(request): 
    if request.method == 'POST': 
     if the_form.is_valid(): 
      my_id = the_form.cleaned_data['myid'] 
      email_addr = the_form.cleanedJ_data['emailaddr'] 
      request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr } 

      return HttpResponseRedirect(reverse('polls:registration_success')) 


def registration_success(request): 
    template = loader.get_template('polls/submitted.html') 
    context = RequestContext(request, request.session.get('registration')) 
    return HttpResponse(template.render(context)) 

回答

0

您可以使用Django的會話來實現that.Here是使用你的代碼的例子。

def register(request): 
    if request.method == 'POST': 
     if the_form.is_valid(): 
      my_id = the_form.cleaned_data['myid'] 
      email_addr = the_form.cleanedJ_data['emailaddr'] 
      request.session['registration'] = {'my_id': my_id, 'email_addr': email_addr } 
      request.session['form-submitted'] = True 
      return HttpResponseRedirect(reverse('polls:registration_success')) 


def registration_success(request): 
    if not request.session.get('form-submitted', False): 
     # handle the case where there is no form submitted 
     return HttpResponseRedirect(reverse('polls:register')) 
    template = loader.get_template('polls/submitted.html') 
    context = RequestContext(request, request.session.get('registration')) 
    return HttpResponse(template.render(context)) 
+0

@edwinlunardo謝謝!在沒有提交表單的情況下,對「get」的第二個參數是否將「form-submitted」設置爲false? (不知道那個默認的「False」值是如何工作的......我也想確保在有人提交表單並看到「成功頁面」後將「form-submitted」設置爲False,因爲我不希望他們稍後再回到那個頁面...? – plact

+0

第二個參數不會將'form-submitted'設置爲'False',但如果'get'方法不返回'form-submitted'鍵,它將返回第二個參數我們可以說它是沒有鍵的默認值 –

+0

好吧,明白了,非常感謝! – plact