网址不匹配,django模板链接

时间:2012-07-03 11:11:25

标签: django templates hyperlink path href

我的django网站的侧边栏中有一个链接的概率,在模板中就像是这样:

<li><a href="profile">Profile</a></li>
在urls.py中

url(r'^(?P<user_id>\d+)/profile/$', 'auth.views.show_profile', name='profile')

当我使用url从主页面访问它时:例如/1001/profile/它加载正常,但是当我尝试使用url从另一个子页面访问它时:例如/1001/forms/profile/我收到错误:当前URL ,/1001/forms/profile/,与这些中的任何一个都不匹配。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

这是因为“profile”是一个相对URL,并且相对URL被附加到当前URL - 结果地址在整个站点中无效。好像你应该使用绝对URL。

在模板上,您可以尝试以下内容:

<a href="/{{ request.user.id }}/profile/">Profile</a>

<强>更新

要获取模板中的请求,您必须将django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS。我不确定它是否默认添加。

答案 1 :(得分:0)

您必须像在/1001/profile/

那样在网址中添加第二个子网页网址
url(r'^(?P<user_id>\d+)/form/profile/$', 'auth.views.show_profile', name='profile_form')

并将您的代码更正为@Paulo提到的,或者您也可以通过反向网址来执行此操作。

<a href="{% url profile request.use.id %}">Profile</a>