如何在Django Rest框架中动态显示切换URL

时间:2020-04-30 11:51:47

标签: django django-rest-framework featuretoggle

我正在一个项目中,我们使用功能切换来隐藏功能,直到准备好发布它们为止。

我们遵循的模式是在功能切换关闭的情况下根本不路由某些端点。也就是说,在library(dplyr) example %>% mutate(date_data = replace(date_data, date_data == "", NA)) %>% group_by(Object) %>% tidyr::fill(date_data, .direction = "up") 中,如果切换已打开,我们仅在urls.py中包括URL。但这意味着功能切换仅在重新启动服务器后才有效。我们希望能够在正在运行的服务器上动态打开和关闭功能切换。似乎urlconf仅在启动时进行解析,因此对它的更改不会在不重新启动的情况下反映出来。

我尝试过基于功能切换的值制作一个中间件来阻止某些URL,该方法可以正常工作,但不能与urlconf文档很好地配合使用,我也想反映一下该文档的状态功能会切换。

总的来说,感觉就像我在与系统作斗争,这通常表明我没有从正确的角度接近它。

那么,人们如何建议我在Django中实现行为的动态功能切换?

编辑:我的意思是说我看过几篇文章,例如:Django dynamic urlpatterns,但实际上没有任何解决方法。

甚至更老的文章都谈到通过重新加载模块来强制刷新Swagger,尽管我可以看到代码再次被执行,但是尽管如此,它似乎并没有影响URL。就像它们正在缓存一样,但是我找不到清除缓存的任何方法(我在该主题上发现的所有帖子都已过时)

1 个答案:

答案 0 :(得分:0)

在urls.py中包含所有url。然后将if-else重定向添加到中间件。

我不清楚是否有多个切换/网址选项,或者只有一个,但听起来您已经可以存储和查找该信息。

class BeforeViewMiddleware(object):
    def process_view(self, request, view_func, view_args, view_kwargs):

        path = request.path

        # look up toggle option, urls in dynamic place. I use a DB table; you said in comments you use Constance 

        if <toggle is off and url is in toggle-on options only>: # depends on how you store this info
             return HttpResponseRedirect("<other url or some error page, whatever>")
相关问题