【问题标题】:How to have a URL like this in Django?如何在 Django 中有这样的 URL?
【发布时间】:2009-11-24 07:25:37
【问题描述】:

如何在 Django 中拥有像 example.com/category/catename-operation/ 这样的 URL?

另外,在某些情况下,用户输入了一个空格分隔的类别,我该如何处理? 例如,如果用户输入类别为“我的家”,那么该类别的 URL 将变为 example.com/my home/ 这不是一个有效的 URL。

我该如何处理这些事情?

【问题讨论】:

  • example.com/my%20home/ 无论如何都是一个完全有效的 URL。
  • 你到底在问什么?您可以通过在 urlconf 中定义它们来获得类似的 URL。你有什么问题?

标签: python django


【解决方案1】:

如果您想让您的 URL 保持美观,例如当用户输入“我的类别”时,您可以在 URL 中使用“my-category”而不是“my%20category”。我建议您查看 SlugField (http://docs.djangoproject.com/en/dev/ref/models/fields/#slugfield) 并使用 ModelAdmin 的 prepopulated_fields 属性预填充该 slugfield。

【讨论】:

【解决方案2】:

http://example.com/my%20home/ 是一个有效的 URL,其中空格字符被转义,Django 将为您完成所有转义/取消转义。

【讨论】:

【解决方案3】:

您可以在视图中使用 slugify 模板标签来处理空格等:

from django.template.defaultfilters import slugify
slugify("This is a slug!") # Will return u'this-is-a-slug'

【讨论】:

    【解决方案4】:

    您可以尝试一个名为 AutoSlugField 的 SlugField 改进版本,它是 Django Custom Management Command Extensions 的一部分。

    【讨论】:

    • 除了 Django Extensions 应用程序中的一个之外,还有许多 AutoSlugField 实现浮动——例如我使用的是bitbucket.org/neithere/django-autoslug——因此,如果您打算自动 slugging,您可能想货比三家,了解最新最好的。
    【解决方案5】:

    您可以考虑为您的类别添加一个 URL 友好的名称,并在 URL 中使用它。

    作为另一个示例,您可以拥有 example.com/tv/ 并拥有名为“电视”的类别。

    【讨论】:

      【解决方案6】:

      我该如何处理这些事情?

      如果你要处理这个东西,获取my-url,然后使用表单域清理方法返回有效的url。这就是它的意义所在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-28
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        • 2021-02-07
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        相关资源
        最近更新 更多