网址名称访问其他视图

时间:2019-04-15 10:02:30

标签: django

我在urls.py文件中有两个路径。当我点击一个网址时,不是选择想要的网址,而是选择另一个网址,为什么? 谁能帮帮我吗。

这是我的urls.py文件:

 from . import views
 from django.urls import path

 app_name = 'olx'

 path('<slug:category_slug>/',views.product_list, name='product_list_by_category'),

 path('myPost/', views.myPost, name='my_all_post'),

在我的html文件中,我正在使用锚标记,如下所示:

 <li class="nav-item">
            <a class="nav-link" href="{% url "olx:my_all_post" %}">My Post
            </a>
          </li>

我尝试用单反逗号替换双反逗号,如下所示:

 href="{% url 'olx:my_all_post' %}"

但它仍在选择另一条路径:

 <slug:category_slug>/

但是如果我从urls.py文件中删除以下路径,则说明它选择了正确的路径。

 path('<slug:category_slug>/',views.product_list, name='product_list_by_category'),

2 个答案:

答案 0 :(得分:0)

问题在于您的网址格式定义的顺序。

'myPost'是有效子弹,因此'<slug:category_slug>/'将与之匹配。

这样更改订单:

path('myPost/', views.myPost, name='my_all_post'),
path('<slug:category_slug>/',views.product_list, name='product_list_by_category'),

答案 1 :(得分:0)

URL模式,

path('<slug:category_slug>/',views.product_list, name='product_list_by_category'),

将匹配任何网址,例如

/something/ 

/something-else/ 

/myPost/

您可以做的就是将该模式更改为类似的内容

path('categories/<slug:category_slug>/',views.product_list, name='product_list_by_category'),