我有一个数据库'艺术家',其中有一个表:'name','style'。 用户可以为艺术家添加任何名称。
我想在我的模板中将参数传递给url,如下所示:
<a href="{% url 'webgui.views.music' artist.name %}" style="margin-bottom: 3px" type="button"
但是可以使用参数'artist.name'动态设置URL(在urls.py中)吗?
我的urls.py其实:
url(r'^music/(\d+)/$', 'webgui.views.music'),
也许我需要通过另一个正则表达式来改变'\ d +'?
答案 0 :(得分:3)
而不是使用
url(r'^music/(\d+)/$', 'webgui.views.music'),
因为 d + 代表数字,所以您应该使用
url(r'^music/?P<artist_name>[a-zA-Z0-9 \'&-]/$', 'webgui.views.music')
不要忘记修改功能
def whatever_named_it(request, artist_name):
...
更新:在模板中,您应该使用
{% url 'webgui.views.music' artist_name=artist.name %}
因为我们使用的是命名参数。
额外:如果您要允许任何文字作为艺术家姓名,我建议您使用slug来避免网址中的空格。这样可以更好地阅读,搜索引擎友好并避免疯狂的用户输入。编程web-app永远不会信任用户输入......永远。
对于“slugified”名称网址将是:
url(r'^music/(?P<slug>[\w-]+)/$', 'webgui.views.music')