2016-02-29 41 views
0

我有這樣的問題: 我有一個形式,它顯示在網站的每個頁面上。因此,該操作是指定的(獨立)的觀點:我怎樣才能得到形式的路徑,之前它產生Django

def subscribe(request): 
    if request.method == "POST": 
     form = SubscriptionForm(data=request.POST) 
     if form.is_valid(): 
      form.save() 
      return redirect() # there is a problem 
    else: 
     raise Http404 

形式的成功處理後,我想給用戶的頁面,從中形式發送重定向。 但是,如果我使用request.path - 它會返回一個處理此表單的URL。但我需要一個網頁的網址...

你明白嗎?我該怎麼辦?

非常感謝!

+0

嘗試'return HttpResponseRedirect(reverse('url-name'))'。 'url-name'表示'urls.py'中給出的url的名字 –

+1

request.path是當前路徑,這是你在這種情況下發布的url。如果你需要知道源URL,你可以添加一個GET參數與該路徑。某些行動=「some_url_i_post_to /?source = {{request.path}}」 – cdvv7788

+0

@ cdvv7788謝謝。 –

回答

1

您需要爲表單添加一個附加字段,以便讓您的視圖知道重定向到的位置。要做到這一點最簡單的方法是將一個隱藏的輸入添加到您的形式:

<form action="/some/url/" method="post"> 
    ... 
    <input type="hidden" name="next" value="{{ request.path }}"> 
</form> 

在用戶提交表單之前的request.path值是頁面的路徑。

在您看來,您可以使用參數next將用戶重定向到它們來自的頁面。

def subscribe(request): 
    ... 
    next = request.POST.get('next', '/some/default/url/here/') 
    return redirect(next) 
相關問題