如何在Django中通过URL传递带空格的变量

9 投票
3 回答
13439 浏览
提问于 2025-04-17 06:53

我在通过网址传递带空格的变量时遇到了问题。假设我有一个对象:

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()。它能帮助你发现像这样的低级错误。

撰写回答