django - 网址不重叠 - 如何修复
问题描述
我正在尝试按品牌或类别过滤产品,但 url 路径只会执行 path('<slug:brand_slug>/', views.product_list,name='product_list_by_brand'),
,因为它首先出现并且不会执行第二个。
有没有一种方法可以合并两条路径或使两条路径独立工作而不考虑顺序。
from . import views
app_name = 'shop'
urlpatterns = [
path('', views.product_list, name='product_list'),
path('<slug:brand_slug>/', views.product_list,name='product_list_by_brand'),
path('<slug:category_slug>/', views.product_list,name='product_list_by_category'),
]
预先感谢您的回复。
解决方案
问题是由于相同的 slug 和其他一些原因,您的上层 url 模式覆盖了第二个 URL。
使固定
更改您的网址格式
path('<slug:brand_slug>/brand/', views.product_list,name='product_list_by_brand'),
path('<slug:category_slug>/', views.product_list,name='product_list_by_category'),
你可以做的另一件事!
修改您的功能和网址模式。
def product_list(request, slug):
mode = request.GET.get("mode")
if mode.lower() == "brand":
''' your brand code '''
pass
else:
''' your category code '''
pass
path('<slug:slug>/', views.product_list,name='product_list_by_category'),
如果您想执行品牌代码,您的 URL 模式将如下所示。
127.0.0.1:8000/yourslug?mode=brand
并使用此 url 模式,它将执行类别代码。
127.0.0.1:8000/yourslug
所以默认情况下它将执行类别代码。
推荐阅读
- express - 仅将 Apollo 服务器部署到 heroku 时出现问题
- stream - 如何在带有全息视图的数据着色器中启用自动重采样以及通过管道进入 DynamicMap 的(实时)数据流?
- c# - 通过单击按钮更改图片框数组中的图像
- python - 容器化连接到 sql server 的 Django 应用程序
- linux - 将参数从 alsa 应用程序传递到内核驱动程序
- javascript - 使用 jQuery Chosen 时隐藏选择列表选项值
- haskell - 仆人中的安全链接
- azure-devops - 自托管代理是否需要专用机器?
- php - 准备好的语句返回错误号 0
- iot - 如何使用 DO + OpenVPN 访问 LAN IOT 设备?