如何在Django中使用example.com/category/catename-operation/
之类的网址?
此外,在某些情况下,用户输入空格分隔类别,我该如何处理?
例如,如果用户将类别输入为“我的家”,则此类别的URL将变为
example.com/my home/
这不是有效的网址。
我该如何处理这些事情?
答案 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。这就是它的意思。