2015-06-20 67 views
1

當我的服務器正在運行,我,我讓我的命令行下面的導航到http://127.0.0.1:8000/termsDjango的 - 模板不加載的,永久的302消息

[19/Jun/2015 18:09:04]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:05]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:05]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:06]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:07]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:07]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:08]"GET /terms HTTP/1.1" 302 0 
[19/Jun/2015 18:09:08]"GET /terms HTTP/1.1" 302 0 

這種輸出的,直到我退出永遠繼續/退出手動服務器會話。

我不知道爲什麼會發生這種情況。我對Django來說很新,所以也許我忽略了一些明顯的東西。

這是我在views.pyterms觀點:

def terms(request): 
    if request.method == 'GET': 
     return redirect(terms) 

這是我termsurls.py路線:

url(r'^terms/', 'my_app.views.terms'), 

我也創造了我的模板文件夾terms.html模板與一些虛擬文本。

爲什麼這不起作用?

我知道有更簡單的方法來做到這一點,但我想知道爲什麼這種特殊的方式不起作用。我想了解如何將條件語句放入使用請求庫的視圖中,以便稍後在此項目中執行一些更復雜的事情。

我誤解了什麼?

回答

2

HTTP status code 302用於重定向。您似乎將從terms重定向回terms並創建無限循環。

你的意思是重定向?如果是這樣,你的意思是重定向到哪裏?

可以重定向到一個對象:

def my_view(request): 
    ... 
    object = MyModel.objects.get(...) 
    return redirect(object) 

或其他視圖:

def my_view(request): 
    ... 
    return redirect('some-view-name', foo='bar') 

或一個相對URL:

def my_view(request): 
    ... 
    return redirect('/some/url/') 

還是要絕對URL:

def my_view(request): 
    ... 
    return redirect('http://example.com/') 

查看redirect docs瞭解更多信息。

如果您不打算重定向,您可能需要return以下其中一項:HttpResponse()render()render_to_response()。請務必在這些視圖中指定您的模板(terms.html)。

對於更少的工作,請使用class-based views

+1

謝謝!這讓我朝着正確的方向前進。我最終不得不爲此使用render或render_to_response。謝謝! – Javier