Django single slug table 和没有前缀的嵌套 url
Django single slug table and nested urls without prefix
好的,这是我的(看似独特的)问题:
我正在尝试让一个 slug table 为 Django 工作。经过无数小时的研究,我发现这不是我认为的常见问题。注意:我是 Django 的新手。
我要解决的真正问题
我想要一个没有前缀的基于 url 的嵌套 slug,像这样:
www.example.com/category-name/product-name
还有:
www.example.com/category-name/brand-name
等等...
应该有 slug 历史的可能性,所以旧的 slug 可以被重定向。
到目前为止我想出了什么:
- 为所有 slug 制作一个 slug table 以确保它们是全局唯一的
- 使用与模型相关的 django-conttenttypes 来确定要加载的视图
- 在 te slug table 中建立关系来定义什么应该嵌套什么不应该嵌套
- 想办法在 urls.py 中进行 slug table 查找,以检查 url 是否有效以及 select 是否正确。
我找到了一个 Rails gem 可以满足我的大部分需求:Friendly_Id
显然我犯了一些基本的设计错误。有人能指出我正确的方向吗?
好吧,原来这个问题比我想的更难也更独特。为了将来参考,这就是我最终解决问题的方式:
- 制作 1 个 slug table,其中所有 slug 都是独一无二的。
- 使用Django ContenType使generic relations在slugtable中的slug和它所属的实体之间
- 制作了一个 middleware 请求重写器,将基于 url 的 slug 的段重写为非 slug url,就像这样:
test.com/category-slug/product-slug
到 test.com/category/6/product/12
, 使用通用关系。
- 在Django内部使用重写的url
注意:这种方法要求所有 slug 在全局范围内都是唯一的,因此 url 的所有片段都是唯一的,这有点麻烦,但是是可行的。
好的,这是我的(看似独特的)问题:
我正在尝试让一个 slug table 为 Django 工作。经过无数小时的研究,我发现这不是我认为的常见问题。注意:我是 Django 的新手。
我要解决的真正问题
我想要一个没有前缀的基于 url 的嵌套 slug,像这样:
www.example.com/category-name/product-name
还有:
www.example.com/category-name/brand-name
等等...
应该有 slug 历史的可能性,所以旧的 slug 可以被重定向。
到目前为止我想出了什么:
- 为所有 slug 制作一个 slug table 以确保它们是全局唯一的
- 使用与模型相关的 django-conttenttypes 来确定要加载的视图
- 在 te slug table 中建立关系来定义什么应该嵌套什么不应该嵌套
- 想办法在 urls.py 中进行 slug table 查找,以检查 url 是否有效以及 select 是否正确。
我找到了一个 Rails gem 可以满足我的大部分需求:Friendly_Id
显然我犯了一些基本的设计错误。有人能指出我正确的方向吗?
好吧,原来这个问题比我想的更难也更独特。为了将来参考,这就是我最终解决问题的方式:
- 制作 1 个 slug table,其中所有 slug 都是独一无二的。
- 使用Django ContenType使generic relations在slugtable中的slug和它所属的实体之间
- 制作了一个 middleware 请求重写器,将基于 url 的 slug 的段重写为非 slug url,就像这样:
test.com/category-slug/product-slug
到test.com/category/6/product/12
, 使用通用关系。 - 在Django内部使用重写的url
注意:这种方法要求所有 slug 在全局范围内都是唯一的,因此 url 的所有片段都是唯一的,这有点麻烦,但是是可行的。