如何在Django中拥有这样的URL?

时间:2009-11-24 07:25:37

标签: python django

如何在Django中使用example.com/category/catename-operation/之类的网址?

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

我该如何处理这些事情?

6 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:3)

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

答案 2 :(得分:1)

您可以在视图中使用slugify模板标记来处理空格,例如:

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您可以考虑在您的类别中添加网址友好名称,并在网址中使用该名称。

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

答案 5 :(得分:0)

  

我该如何处理这些事情?

如果你想处理这个东西,要获取my-url,然后使用表单字段clean方法返回有效的url。这就是它的意思。