2014-02-07 31 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