在django中将模板从模板传递到视图

时间:2014-07-08 07:11:57

标签: python django django-templates django-views slug

我有一个应用程序,我试图将一个slug字段从模板( frames.html )传递给views.py。我的问题是,当点击frames.html上的链接时,我看到网址发生了变化,但它似乎无法到达视图。(我的views.py中的打印语句没有打印出来,所以&我怎么知道。)我的 frames.html 如下

<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))

正如我所提到的,点击 frames.html 上的链接后,我可以看到我的网址从http://127.0.0.1:8000/frames/更改为http://127.0.0.1:8000/frames/FR123/。 我在urls.py中错误配置了吗?我是python / django的初学者。请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

问题出在您的网址中。您的frames网址最终不会终止正则表达式。所以它也匹配任何只是开始的&#34;帧&#34;,其中包括&#34; frames / FR123&#34;。

您应确保所有网址明确以$结尾,以防止此情况发生。

url(r'^frames/$', 'vTryON.views.VTryONAll'),
相关问题