Django Tastypie:带有“空格”的反向 url。如何?

Posted

技术标签:

【中文标题】Django Tastypie:带有“空格”的反向 url。如何?【英文标题】:Django Tastypie: reverse url with "spaces". How? 【发布时间】:2012-06-23 21:07:50 【问题描述】:

这让我发疯:

我有一个 Tastypie 自定义资源(不是 ModelResource)。

我需要为“主键”允许“空格”(%20 代码)。为了 示例:

localhost:8000/api/v1/collections/i%20am%20a%20space/

添加带有“\s”的正则表达式适用于GET (obj_get)PUT (obj_update)DELETE (obj_delete)

def override_urls(self):
return [url(r"^(?P<resource_name>%s)/(?P<name>[\w\d\s_.-]+)/$" % self._meta.resource_name, self.wrap_view('dispatch_detail'), name="api_dispatch_detail")]

问题出在obj_get_list:返回对象列表时, 如果存在空格,则参数resource_uri 为空。代码 函数reverse (django.core.urlresolvers) 失败 NoReverseMatch 异常。

我什至尝试覆盖来自美味派的 base_urls,但它没有奏效,我现在真的迷路了。也许这是一个菜鸟问题,但考虑到我大约 1 个月前开始使用 django 和 python:我是菜鸟:-P

【问题讨论】:

已解决:我是一个超级菜鸟 :-P 只是在正则表达式中更改了“pk”的“名称”:^(?P%s)/(?P [\w\d\s_.-]+)/$ 也许你应该把你的解决方案放在答案中,这样它就不会出现在未回答的部分。 【参考方案1】:

刚刚更改了正则表达式中“pk”的“名称”:

^(?P<resource_name>%s)/(?P<name>[\w\d\s_.-]+)/$

【讨论】:

以上是关于Django Tastypie:带有“空格”的反向 url。如何?的主要内容,如果未能解决你的问题,请参考以下文章

Django RESTful API - django-piston 与 django-tastypie

Django-Tastypie 过滤所有字段

包含过滤条件的 Django-tastypie REST url

Django Tastypie,运行一个动作

Django/Tastypie - DELETE 请求删除所有内容

如何通知应用程序凭据在 Django/Tastypie/REST 中成功