如何在Django中通过URL传递带空格的变量
我在通过网址传递带空格的变量时遇到了问题。假设我有一个对象:
class Kiosks(models.Model):
name = models.CharField(max_length = 200, unique = True)
owner = models.ForeignKey(User)
现在,给自助终端输入的“名字”是“Akash Deshpande”,并且已经保存了。现在在跳转到新页面时,我使用的是这个“自助终端名字”,也就是:
messages.success(request,"Kiosk edited successfully")
return HttpResponseRedirect('/kiosks/'+kiosk.name+'/')
处理这个网址的视图如下:
def dashboard(request, kiosk_name):
kiosk =Kiosks.objects.get(name__iexact = kiosk_name)
deal_form = DealsForm(kiosk=kiosk)
code_form = CodeForm()
unverified_transactions = get_unverified_transactions(kiosk)
return render(request,'kiosks/dashboard.html',{'kiosk':kiosk,
'deal_form' : deal_form,
'code_form' : code_form,
'unverified_transactions' : unverified_transactions})
主urls.py文件会把所有带有“kiosks”的请求导向下面的urls,kiosks的urls.py文件:
urlpatterns = patterns('kiosks.views',url(r'^(\w+)/$', 'dashboard'),)
现在,原本应该跳转到这个页面,但却出现了“页面未找到”的错误。我该如何传递带空格的变量呢?这个问题清楚吗?任何帮助都非常感谢。
3 个回答
0
这里有一个相关的例子,我用它来在正则表达式中忽略空格,其中的 \s 用来避免在网址名称中出现空格。
url(r'^api/product/(?P<product_name>[\w\s]+)/$',ProductDetailApiView.as_view()),
4
没错,在你的正则表达式中允许空格是可以的……像这样就对我有效……
url(r'^find-interiordesigners/state-(?P<state>.+?)/$',DesignersByCategoryCityState.as_view(),name='findInterior-state'),
14
在你的正则表达式中允许空格。
urlpatterns = patterns('kiosks.views', url(r'^([\w ]+)/$', 'dashboard'),)
为了上天的份儿,使用 reverse()
。它能帮助你发现像这样的低级错误。