3

我在我的 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/与其中任何一个都不匹配。我怎样才能解决这个问题?

4

2 回答 2

1

这是因为“个人资料”是一个相对 URL,并且一个相对 URL 附加到当前 URL - 结果地址在整个站点中无效。似乎您应该在您的情况下使用绝对 URL。

在模板中,您可以尝试以下操作:

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

更新

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

于 2012-07-03T11:16:00.867 回答
0

您必须像您一样在 url 中添加第二个子页面 url/1001/profile/

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

并按照@Paulo 提到的那样更正您的代码,或者您也可以通过反向 url 来完成。

<a href="{% url profile request.use.id %}">Profile</a>
于 2012-07-03T11:24:56.827 回答