Django 和 Tastypie 的反向 URL 问题
我们正在将 API 从 Django - Piston 移植到 Django-TastyPie。一切都很顺利,直到我们遇到这个:
应用程序的 urls.py
url(r'^upload/', Resource(UploadHandler, authentication=KeyAuthentication()), name="api-upload"),
url(r'^result/(?P<uuid>[^//]+)/', Resource(ResultsHandler, authentication=KeyAuthentication()), name="api-result")
这使用了活塞,所以我们想将其更改为美味派的东西
url(r'^upload/', include(upload_handler.urls), name="api-upload"),
url(r'^result/(?P<uuid>[^//]+)/', include(results_handler.urls), name="api-result")
但我们陷入了这个错误
未找到带有参数 '()' 和关键字参数 '{'uuid': 'fbe7f421-b911-11e0-b721-001f5bf19720'}' 的反向 'api-result'。
以及结果的调试页面:
使用 MelodyService.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:
^melotranscript/ ^upload/ ^melotranscript/ ^结果/(?P[^//]+)/ ^(?Presultshandler)/$ [name='api_dispatch_list'] ^melotranscript/ ^结果/(?P[^//]+)/ ^(?Presultshandler)/schema/$ [name='api_get_schema'] ^melotranscript/ ^结果/(?P[^//]+)/ ^(?Presultshandler)/set/(?P\w[\w/;-]*)/$ [name='api_get_multiple'] ^melotranscript/ ^结果/(?P[^//]+)/ ^(?Presultshandler)/(?P\w[\w/-]*)/$ [name='api_dispatch_detail'] ^melotranscript/ ^已处理/(?P.)$ ^管理员/文档/ ^TOU/$ [名称='TOU'] ^$ [名称='索引'] ^管理员/ ^doc/(?P.)$ 当前 URL melotranscript/result/fbe7f421-b911-11e0-b721-001f5bf19720/ 与其中任何一个都不匹配。
有谁知道问题所在吗?这可能是一个非常愚蠢/新手的问题......
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
对于以后遇到此问题的访问者,URL 名称为
api_dispatch_list
,并且您还需要指定 API 名称:还有其他 URL 名称 那个 Tastypie 也提供:
您可以在反向调用中使用它们,也可以在 HTML 中使用它们,如下所示:
For future visitors who are having this problem, the name of the URL is
api_dispatch_list
, and you also need to specify the API name:There are other URL names that Tastypie also provides:
You can use those in a call to reverse, you can use them in your HTML like so:
Django“include”不支持名称。您可以在 https://github.com 中找到 Tastypie 网址的名称/toastdriven/django-tastypie/blob/master/tastypie/resources.py : Resource.base_urls()
Django 'include' doesn't support names. Names of Tastypie urls you can find in https://github.com/toastdriven/django-tastypie/blob/master/tastypie/resources.py : Resource.base_urls()
我不能写评论所以我必须在这里发帖
要将其包含在您的模板中,您应该这样做
,或者在我的情况下,它仅在没有 api 部分的情况下工作
,以获取资源的可用 url 列表,从 python shell 导入您的资源,然后执行以下命令,
您应该得到类似的内容
有关更多详细信息或者如果您正在使用命名空间,请检查此
https://github.com/toastdriven/django-tastypie/issues/409
I can't write comments so I have to post here
to include it in your template you should do
or in my case it worked ONLY without the api part
to get list of available urls of your resource, import your resource from python shell then execute the following command
you should get something like this
For more details or if you are using namespace check this
https://github.com/toastdriven/django-tastypie/issues/409