gpt4 book ai didi

django - 在 get_resource_uri 中构建反向 url

转载 作者:行者123 更新时间:2023-12-04 21:20:44 24 4
gpt4 key购买 nike

如果有人阅读 Tastypie-Mailinglist:我没有在那里得到答案,很抱歉在这里交叉发布。

在 Tastypie 中,我更改了一个资源的 URL 模式,因为我使用了另一个 key 而不是 PK。当我访问资源时,这工作正常。
现在我想将此资源嵌套到父资源中,但嵌套的资源包含带有 PK 的 URI,而不是我的自定义键。我学到的是,就我而言,我必须更改 child 的 get_resource_uri。

我 child 的资源(它是 NamespacedResource)中的方法如下所示:

def get_resource_uri(self, bundle_or_obj):

obj = bundle_or_obj.obj if isinstance(bundle_or_obj, Bundle) else bundle_or_obj

kwargs={
'resource_name': self._meta.resource_name,
'custom_id': obj.custom_id
}

return self._build_reverse_url('api_dispatch_detail', kwargs=kwargs)

child 的 url 覆盖方法是这样的:
def override_urls(self):
return [
url(r"^(?P<resource_name>%s)/(?P<custom_id>[-_\w\d]+)%s$" % (
self._meta.resource_name,
trailing_slash()
),
self.wrap_view('dispatch_detail'),
name="api_dispatch_detail"
),
]

但应用程序无法反转 URL。我收到此错误:
Reverse for 'api_dispatch_detail' with arguments '()' and keyword arguments '{'custom_id': u'3_ee5-4423', 'resource_name': 'myresource'} not found.

如何正确反转 URL?

提前致谢。

最佳答案

Tastypie 的内部网址总是需要 resource_nameapi_name夸格斯。

你的 kwargs 应该包含:

kwargs = {
'api_name': 'v1', # Or whatever you have set for your api
'resource_name': self._meta.resource_name,
'custom_id': obj.custom_id
}

关于django - 在 get_resource_uri 中构建反向 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12314058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com