【问题标题】:Url mismatch, django template link网址不匹配,django模板链接
【发布时间】:2012-07-03 19:30:52
【问题描述】:

我的 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/ , 与这些都不匹配。我该如何解决这个问题?

【问题讨论】:

    标签: django templates hyperlink path href


    【解决方案1】:

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

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

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

    更新

    要在模板中获取请求,您必须将 django.core.context_processors.request 添加到 TEMPLATE_CONTEXT_PROCESSORS。不知道是不是默认添加的。

    【讨论】:

    • 我试过了,但现在我得到了“哎呀!谷歌浏览器找不到配置文件'!
    • 用户是否经过身份验证,您是否在使用 RequestContext?
    • 我刚做了,有冲突,用户id没有正确传递。感谢您的帮助。
    【解决方案2】:

    你必须像 /1001/profile/ 那样在 urls 中添加你的第二个子页面 url

    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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-24
      • 2020-01-09
      • 1970-01-01
      • 2017-03-05
      • 2012-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      相关资源
      最近更新 更多