簡體   English   中英

如何在 Django rest 框架中動態顯示切換 URL

[英]How to feature toggle URLs dynamically in Django rest framework

我正在做一個項目,我們使用功能切換來隱藏功能,直到它們准備好發布。

我們遵循的模式是,如果功能切換關閉,則根本不路由某些端點。 即在urls.py中,如果切換打開,我們只在urlconf中包含 URL。 但這意味着功能切換只有在服務器重新啟動時才會生效。 我們希望能夠在正在運行的服務器上動態打開和關閉功能切換。 似乎urlconf僅在啟動時解析,因此如果不重新啟動,則不會反映對它的更改。

我已經嘗試制作一個中間件來根據功能切換的值阻止某些 URL,它可以工作,但不能很好地與Swagger文檔配合使用,我也想反映功能切換的 state。

總的來說,感覺就像我在與系統作斗爭,這通常表明我沒有從正確的角度接近它。

那么,人們如何建議我在 Django 中實現行為的動態功能切換?

編輯:我的意思是說我看過一些帖子,比如這個: Django dynamic urlpatterns但實際上並沒有任何解決方案。

一些更老的帖子談到通過重新加載模塊來強制刷新urlconf ,我已經嘗試過了,但是,雖然我可以看到代碼再次執行,但它似乎不會影響 URL。 就好像它們正在被緩存,但我找不到任何清除緩存的方法(我在該主題上找到的所有帖子都已過時)

在 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>")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM