【问题标题】:django routes helpdjango路线帮助
【发布时间】:2010-02-02 11:20:50
【问题描述】:

嘿伙计们,我正在制作一个简单的汽车销售网站。我有一个不错的小 urlpattern,效果很好

/car/1/

去有那个ID的车,简单吗?

但是,出于 SEO 的原因,我想在 URL 中添加额外的数据,但忽略它。

/car/1/ford/focus

例如,我将如何修改我的模式以考虑额外的部分?

这两种模式会去同一个地方并加载同一个视图。

有什么想法吗?

【问题讨论】:

    标签: django url routes


    【解决方案1】:

    这对您的 SEO 没有帮助 - 事实上,它会严重伤害它。如果/car/1//car/1/ford//car/1/ford/focus/ 都指向同一个 URL,那么您实际上已经降低了该页面的搜索权益。这是一个非常糟糕的主意。

    如果你真的想做,很简单:

    r'^car/(?P<car_id>\d+)/.*/$'
    

    但我真的不会这样做。一个更好的主意是省略 ID 并使用品牌和型号来获取汽车:

    r'^car/(?P<make>\w+)/(?P<model>\w+)/$'
    

    所以现在你有了/car/ford/focus/ 形式的 URL,在你看来你可以这样做:

    def myview(request, make, model):
        car = Car.objects.get(make=make, model=model)
    

    【讨论】:

    • 我同意,最好省略 id 并创建一个可访问的 URL - 请参阅 ibm.com/developerworks/library/us-cranky8.html 了解更多信息
    • 我收到此错误渲染时出现异常:不正确的整数值:第 1 行的列 'make_id' 的 'ford'
    • 我不知道您如何在 Car 模型上存储品牌和型号值,所以我只使用了字符字段。如果它们实际上是外键,则需要相应地更改 .get - 请参阅文档以了解如何跨关系进行查找。如果您仍然无法解决,请发布一个新问题并包含您的模型代码。
    【解决方案2】:

    使用 SlugField(或 AutoSlugField)构建 SEO 友好的 URL

    【讨论】:

    • 我实际上已经转向这种方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多