2014-12-07 52 views
1

所以這個問題很簡單。最終用戶填寫表單並點擊提交,然後我希望頁面重新加載(如果成功)。問題在於表單位於每個用戶個人資料頁面上,而不是靜態網址。所以,我不能這樣做:如何在views.py中呈現當前頁面?

return HttpResponseRedirect('/accounts/{{ username }}') 

我知道我不能在這個例子中傳遞變量,但我不知道怎麼回事做到這一點。有沒有另一種方法來完成我在這裏要做的事情?有沒有辦法刷新當前頁面?我現在不在尋找任何ajax解決方案,我只是在提交表單時嘗試重新加載當前頁面。

回答

4

如果您的POST請求不應該重新加載相同的頁面,您應該始終重定向(請參閱PRG)。所以我假設你的意思是你想在成功提交時重定向到相同的視圖。

就可以得到當前登錄的用戶與request.user,所以你可能想嘗試這樣的事:

from django.shortcuts import render, redirect 

def some_view(request): 
    form = SomeForm(request.POST or None) 
    if form.is_valid(): 
    # do something 
    return redirect('/accounts/{}'.format(request.user)) 
    return render(request, 'form.html', {'form': form}) 

但是,它會更好,如果你有一個名爲帳戶URL模式:

現在
url('/accounts/(?P<username>\w+)/$', 'some.view', name='user-home') 

,你可以這樣做:

def some_view(request): 
    form = SomeForm(request.POST or None) 
    if form.is_valid(): 
     # do something 
     return redirect('user-home', username=request.user) 
    return render(request, 'form.html', {'form': form}) 
+0

偉大的答案。謝謝。 – stephan 2014-12-08 22:08:28

相關問題