gpt4 book ai didi

django - 自定义 Tastypie 的 URL 配置

转载 作者:行者123 更新时间:2023-12-04 06:15:05 25 4
gpt4 key购买 nike

我正在将我的 API 从 Piston 移植到 TastyPie。我们有现有的客户端,因此我们希望保持 API 的 url 结构相同。

我网站的顶级 urls.py conf 如下所示:

    urlpatterns = patterns('',
........LOTS OF STUFF

(r'^v1/', include('api.urls')),

使用 Piston,然后每个单独的资源都在 api.urls 中独立注册并添加到 urlpatterns,例如,您可能会看到/v1/deals/。

现在,我在用 TastyPie 重新创建这个结构时遇到了一些问题。在其顶层,Tastypie Api() 对象的 urlpatterns 需要一个名为“api_name”的捕获组。默认情况下,v1 被硬编码为该顶级模式,但您可以通过在实例化 Api() 时将“api_name”作为关键字参数传递来覆盖它。

我当前的 api.urls.py 看起来像这样(带有tastypie):
   v1_api = Api()
v1_api.register(DealResource())

urlpatterns = patterns('',
(r'^', include(v1_api.urls)),

)

结果是 API 要匹配的模式现在是“/v1/v1/[resource_name]/”。

一个问题是我不知道如何从顶级 url conf 中删除 ^v1/'。我们的索引页匹配 '^$',所以我不能只走那条路。

我想我可以只注册单个模型资源,而不是 api 对象。不过,这似乎不太理想。我错了吗?

我还考虑过对 Tastypie Api 对象进行子类化并删除“api_name”捕获组。

有什么想法吗?

最佳答案

我相信最好的方法仍然是从顶级 urlconf 中删除“v1”前缀。类似的东西:

urlpatterns = patterns('',
........LOTS OF STUFF
(r'^$', 'app.views.home_page'),
(r'', include('api.urls')),
)

这样,空请求将映射到您的主页,而 API 请求将继续到您的 api.urls 配置。

另一种方法是直接将 API url 添加到 urlpatterns 实例:
urlpatterns = patterns('',
........LOTS OF STUFF
)

urlpatterns += api.urls.ulrpatterns

关于django - 自定义 Tastypie 的 URL 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7350934/

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