微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单击菜单项将目录添加到 Django 中的当前 URL

如何解决单击菜单项将目录添加到 Django 中的当前 URL

我的导航菜单项有问题。当用户Item X页面中并点击导航菜单Item Y 时,他们应该被带到 example.com/ItemY。相反,它们会被带到 example.com/ItemX/ItemY,这会导致页面未找到错误

Page not found (404)
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/biology/ItemX/ItemY
Using the URLconf defined in mysite.urls,Django tried these URL patterns,in this order:

admin/
[name='home']
chemistry/<slug:slug>/ [name='chemi']
summernote/
blog/ <str:parent>/<slug:slug>/ [name='blog_list']
^media/(?P<path>.*)$
The current path,blog/biology/ItemX/ItemY,didn’t match any of these.

这些是我的项目网址格式:

#urls.py
urlpatterns = [
    path('admin/',admin.site.urls),path('',include('chemistry.urls')),path('summernote/',include('django_summernote.urls')),path('blog/',include('blog.urls')),]

这些是我的应用网址:

#blog/urls.py
urlpatterns = [
path('<str:parent>/<slug:slug>/',views.BlogDetail.as_view(),name='blog_list'),]

这是包含导航栏的 HTML 模板:

<div class="card-body">
    <nav><ul>
    {% for blog in blog_list %}
     <li><a href="{{blog.slug}}">{{blog.title}}</a></li>
    {% endfor %}
    </ul></nav>
</div>

我该如何解决这个问题?

解决方法

为了解决这个问题,我将 <a> 标签更改为:

<li><a class='text-muted' href="{{ blog.get_absolute_url }}">{{blog.title}}</a></li>

我在博客模型中添加了一个 get_absolute_url 方法:

def get_absolute_url(self):
    return reverse("blog_list",args=[str(self.parent),str(self.slug)])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。