2014-02-07 37 views
0

我有一個網址設置與下面的視圖(URL是在應用程序和應用程序的URL包括在項目):Django的URL的變化,但不會呈現正確的觀點

url(r'^details/(?P<outage_id>\d+)/$', 'outage.views.outage_details'), 

def outage_details(request, outage_id=1): 
    outage_info = Outages.objects.filter(id=outage_id) 
    return render_to_response('templates/outage/details.html', {'outage_info': outage_info}, context_instance=RequestContext(request)) 

當我點擊http://localhost:8000的鏈接,瀏覽器中的網址就會改變爲http://localhost:8000/outage/details/1,但該視圖並不會顯示正確的模板。頁面保持不變。我沒有得到任何錯誤,瀏覽器中的url更改,但details.html模板不呈現。 DB中有一個ID爲1的中斷。

有什麼想法?

+0

我看到的一個問題是,'Outages.objects.filter(id = outage_id)'返回一個查詢集,而不是一個對象。那是你要的嗎 ? – karthikr

+0

我想django是如此的新鮮,我不知道這個答案。我知道,如果我從視圖中刪除查詢,並且只是render_to_response模板,它仍然只會更改url並且實際上並不呈現模板。另外,如果我將文件名從details.html更改爲其他內容,但不更改視圖,則會發生同樣的情況。沒有錯誤。 – JasonS

+0

你應該發佈你的整個urls.py。您的索引視圖可能會捕獲所有網址。 –

回答

1

正則表達式r'^details/(?P<outage_id>\d+)/$'與URL http://localhost:8000/outage/details/1不匹配。但是,它應該匹配表達式r'^outage/details/(?P<outage_id>\d+)/$'。也許,你可以發佈你的整個urls.py來找出哪個視圖實際被調用,因爲你沒有得到任何錯誤。我懷疑你的主頁正在被調用所有的URL。

+0

這是我的網址設置: – JasonS

+0

嗯,我的猜測是正確的:)改變你的第一個url模式爲:'url(r'^ $','outage.views.show_outages'),' – arocks

+0

Jeez!我盯着那個文件一個小時,從來沒有看到我錯過了$。謝謝你的額外眼睛! – JasonS

0

這裏是我的網址設置:

項目/ urls.py

urlpatterns = patterns('', 
url(r'^$', 'outage.views.show_outages'), 
url(r'^inventory/', include('inventory.urls')), 
url(r'^outage/', include('outage.urls')), 
url(r'^login', 'django.contrib.auth.views.login', {'template_name': 'templates/auth/login.html'}), 
url(r'^logout', 'django.contrib.auth.views.logout', {'next_page': '/'}), 
url(r'^admin/', include(admin.site.urls)), 

停運/ urls.py

urlpatterns = patterns('', 
url(r'^', 'outage.views.show_outages'), 
url(r'^notes/(?P<outage_id>\d+)/$', 'outage.views.outage_notes', name='notes'), 

我有因爲改變了細節來記錄,因爲我有另一個頁面在不同的應用程序中的細節網址,我不想讓它混淆東西。

+0

請編輯你的問題,而不是將此作爲答案加入 – arocks

+0

我試過了,但我超過了200個字符。 – JasonS