2014-07-08 65 views
0

我有一個應用程序wherin我試圖從模板(frames.html)傳遞一個slug字段到views.py。我的問題是,當點擊frames.html上的鏈接時,我發現網址發生了變化,但似乎沒有達到視圖(我在我的views.py中有打印語句,它們沒有打印出來,所以我就是這樣做的知道。)。我frames.html如下從模板傳遞slug到django中查看

<div id="FramePage"> 
    {% for frame in Frames %} 
    <p><a href="/frames/{{ frame.slug }}/">{{frame}}</a>     
    {% endfor %} 
</div> 

這是我urls.py

urlpatterns = patterns('', 
# Examples: 
#url(r'^$', 'vTryON_Django.views.home', name='home'), 
# url(r'^blog/', include('blog.urls')), 
url(r'^admin/', include(admin.site.urls)), 
url(r'^$', 'vTryON.views.home_page'), 
url(r'^frames/', 'vTryON.views.VTryONAll'), 
url(r'^frames/(?P<frameslug>.*)/$', 'vTryON.views.selectedFrame'), 
url(r'^tryonpage/', 'vTryON.views.tryonpage'), 
url(r'^uploadPC/', 'vTryON.views.uploadPC'), 
url(r'^uploadWebcam/', 'vTryON.views.uploadWebcam'), 

入口,這是我的看法功能views.py

def selectedFrame(request, frameslug): 
    #print('selectedFrame') 
    frame= VTryON.objects.get(slug=frameslug) 
    #print(frame) 
    context={'frame':frame} 
    #print('context') 
    return render_to_response('selectedframe.html', context, context_instance=RequestContext(request)) 

正如我所提到的,我可以看到我的網址從http://127.0.0.1:8000/frames/更改爲http://127.0.0.1:8000/frames/FR123/,因爲我點擊frames.html上的鏈接。 我在urls.py中配置錯了嗎?我是一個Python/Django的初學者。請幫助我。提前感謝。

+0

請放慢您的其他urls.py。 –

回答

0

問題出在您的網址上。您的frames網址在末尾不會終止正則表達式。因此它也可以將任何簡單的開始與「幀」(其中包括「幀/ FR123」)進行匹配。

您應該確保所有網址明確以$結尾,以防止出現這種情況。

url(r'^frames/$', 'vTryON.views.VTryONAll'), 
+0

嗨,我把$放在我的網址,就像你說的。現在,我看到它轉到views.py(打印語句打印)。但是,當我嘗試呈現模板(selectedframe.html)的響應時,它確實爲我提供了模板。它給了我一個TemplateDoesNotExist在/ frames/fr123 /,儘管我在templates文件夾中有了selectedframe.html。可能是什麼問題呢? – naiveDeveloper

+0

我通過創建另一個虛擬模板來解決問題:) – naiveDeveloper

相關問題