试图用url代替id传递企业名称。当我传递id时,一切都很好。
URLS.Py
url(r'^(?P<name>\w+)/$', 'views.business'),
VIEW
def business(request, name=1):
return render_to_response('business.html',
{'business': business.objects.get(name=name) })
模板.html
<a href="http://website.com/{{ business.name|slugify }}/">Name{{ business.name }}</a>
当我这样做的时候,它只对一个单词的企业名称起作用,比如“银行”,但是如果企业有多个单词“富国银行”,它就不会起作用。
我的目标是使用slugify来传递对seo友好的短url,比如
http://website.com/business-name/
谢谢你的时间和帮助!
最佳答案
首先,您需要在URL配置中允许破折号:
url(r'^(?P<name>[-\w]+)/$', 'views.business'),
[-\w]+
在任何情况下都匹配“字母数字”字符、下划线(\u)和短划线。此外,在视图中,您需要“取消”传入的值:
def business(request, name='unknown'):
name = name.replace('-', ' ').capitalize()
return render_to_response('business.html',
{'business': business.objects.get(name=name) })
还可以看到:
My Django URLs not picking up dashes
docs on slugify
How do I create a slug in Django?
希望能有所帮助。