如何解决单击菜单项将目录添加到 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 举报,一经查实,本站将立刻删除。