2012-07-03 21 views
3

我得在我的Django网站的侧边栏的链接一个概率,在模板中就好像是:地址不匹配,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/,不匹配任何这些。我怎样才能解决这个问题?

回答

1

这是因为“个人资料”是一个相对的URL和相对URL附加到当前的URL - 生成的地址不是整个网站有效。好像你应该在你的案例中使用绝对URL。

在你可以尝试这样的模板:

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

UPDATE

要获得请求,你必须django.core.context_processors.request添加到TEMPLATE_CONTEXT_PROCESSORS模板可用。我不确定它是否默认添加。

+0

我试过了,但现在我得到'哎呀!谷歌浏览器无法找到配置文件'! – marlen

+0

用户是否已通过身份验证并使用RequestContext? –

+0

是的,我使用的是和用户进行身份验证。 – marlen

0

您必须添加你的第二子页面的网址URL中像你这样的/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>