我在Django网址中如何处理'&'?

2024-10-01 05:02:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django站点,它使用项目名称创建对查看器友好的url。例如:

/item/DeluxeWidget/

我有一件物品的名字里有一个和号:

^{pr2}$

和号把东西扔了。如果我使用{小工具名称|修正了“与号”},与号将作为&进行转义,但在URL模式中仍然没有选择:

url(r"^widget/(?P<name>[0-9a-zA-Z&,. -]+)/$", 'site.views.widget' ),

在视图中,我使用捕获的名称来做

Widget.objects.get(name=name)

什么是转义、模式或过滤器的正确组合来处理URL中的和号?我也希望能遇到带撇号的名字。我也该做些什么来处理这些问题吗?在


Tags: 工具djangoname名称url站点模式widget
2条回答

一般来说,最好不要这样做,并遵循一种这样的模式-让我们用这个页面作为一个例子(http://stackoverflow.com/questions/13212960/how-do-i-handle-ampersands-in-django-urls

然后您可以:

url(r"^widget/(?P<widget_id>[0-9]+)/(?P<widget_name>(.*?)/$", 'site.views.widget' ),

然后:

  • {{ widget.name|fix_ampersands }}变成{}
  • Widget.objects.get(name=name)变成{}

考虑使用一个SlugField,它可以自动填充另一个适合在url中使用的字段的清理版本。在

相关问题 更多 >