2016-11-11 57 views
2

我正在閱讀有關如何使用Django消息向用戶顯示消息的文檔。它說,爲了在您的意見添加消息調用:如何將Django消息寫入您的視圖代碼

from django.contrib import messages 
messages.add_message(request, messages.INFO, 'Hello world.') 

我不知道放在哪裏第二的第二行,這是我的看法:

def sign_up(request): 

    if request.method == "POST": 
     form = IdForm(request.POST) 
     if form.is_valid(): 
      post = form.save() 
      post.save() 
      ID = post.id_text 
      return HttpResponse('Thank you') 
     else: 
      return HttpResponse('That text is invalid') 
    else: 
     form = IdForm() 
    return render(request, 'checkin/base.html', {'form': form}) 

我想該消息將出現並感謝用戶註冊並顯示其輸入。

回答

2

軸承,記住,這是習慣性地重定向到有效的表單提交成功的網址,你的代碼應該是這樣的:

def sign_up(request): 

    if request.method == "POST": 
     form = IdForm(request.POST) 
     if form.is_valid(): 
      post = form.save() 
      post.save() 
      ID = post.id_text 
      messages.add_message(request, messages.INFO, 'Hello world.') 
      return HttpResponseRedirect('/thank-you-page/') 

    else: 
     form = IdForm() 
    return render(request, 'checkin/base.html', {'form': form}) 

注意,這也導致用戶被告知到底爲什麼他表單無效(假設您已經設置了模板屬性)。說問題是什麼總是好事,而不是說有問題。

+0

什麼時候該消息應該出現?當你到達你的重定向頁面?因爲當我將路徑傳遞給'HttpResponseRedirect'時,我得到了404錯誤。我的應用程序URL是'localhost:8000/checkin /',視圖位於'localhost:8000/checkin/sign_up',但是當我嘗試給出參數'/ sign_in /'(讓我們說我將它們重定向到頁面你登錄的地方)到'HttpResponseRedirect',它不會將我重定向到'localhost:8000/checkin/sign_in',而是將我重定向到'localhost:8000/sign_up'。 – Amon

+1

'/ thank-you-page /'只是一個例子,請選擇您網站上最合適的頁面。再次將用戶重定向到登錄頁面毫無意義。通常大多數網站都有一個儀表板或主屏幕,用戶登錄後發送到 – e4c5

+0

但是,這會解決它重定向到哪裏的問題嗎?我會寫另一個視圖,並檢查 – Amon