试图用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?
希望能有所帮助。

08-25 10:35
查看更多