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

Posted

技术标签:

【中文标题】如何在:Django 中通过 URL 传递带空格的变量【英文标题】:How to pass variables with spaces through URL in :Django 【发布时间】:2012-01-04 12:19:35 【问题描述】:

我在通过 url 传递带有空格的变量时遇到了麻烦。 现在假设我有一个对象

class Kiosks(models.Model):
    name = models.CharField(max_length = 200, unique = True)
    owner = models.ForeignKey(User)

现在为 kiosk 输入的“名称”是“Akash Deshpande”并保存。现在,在重定向到视图中的新页面时,我使用的是“kiosk name” 即

 messages.success(request,"Kiosk edited successfully") 
 return HttpResponseRedirect('/kiosks/'+kiosk.name+'/')

这个url对应的view如下:

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 只是将所有带有“信息亭”的东西引导到下面的 url 信息亭 urls.py

urlpatterns = patterns('kiosks.views',url(r'^(\w+)/$', 'dashboard'),)

现在不是去这个页面,而是给出一个错误“页面未找到”。我如何传递其中有空格的变量? 问题清楚了吗? 任何帮助将不胜感激。

【问题讨论】:

urls.py 中的视图入口是什么样的? 【参考方案1】:

在你的正则表达式中允许空格。

urlpatterns = patterns('kiosks.views', url(r'^([\w ]+)/$', 'dashboard'),)

为了Pete 的爱,请使用reverse()。它将帮助您发现此类愚蠢的错误。

【讨论】:

【参考方案2】:

是的..在你的正则表达式中允许空格..这样的东西对我有用..

url(r'^find-interiordesigners/state-(?P<state>.+?)/$',DesignersByCategoryCityState.as_view(),name='findInterior-state'),

【讨论】:

【参考方案3】:

这是我用来忽略正则表达式中空格的相关示例,其中 \s 正在努力避免 url 名称中的空格

url(r'^api/product/(?P[\w\s]+)/$',ProductDetailApiView.as_view()),

【讨论】:

以上是关于如何在:Django 中通过 URL 传递带空格的变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Yii 1.x 中通过 GET 传递表单模型

Django URL 基于带空格的字符域?

如何在 Django 中通过 PUT 请求处理文件上传?

如何从我的 C# 代码中通过自定义 url 方案访问传递到我的应用程序的值?

在子路径中通过 nginx+uwsgi 运行 django app

如何在 moya 中通过 POST 请求传递 JSON 正文