我正在尝试从上下文处理器获取当前应用程序名称(包含当前视图的应用程序),因为我的所有应用程序都有自己的Webdoor模型,但它们都具有相同的属性(某些值不同)。来自Webdoor的值在每个页面上使用,所以我想在我的自定义上下文处理器中使用它来使这个任务比在每个视图上调用它更容易。 不仅如此,我还可以将它用于其他类似的任务。 一旦我知道模型名称,我只需要应用程序使用get_model方法调用它。
任何人都知道如何做到这一点?
谢谢!
答案 0 :(得分:4)
查看当前视图的一个好地方是process_view() middleware method,它恰好是添加请求变量的好地方。 E.g:
class CurrentViewApplicationName(object):
def process_view(self, request, view_func, view_args, view_kwargs):
request.current_app = view_func.__module__.split('.')[0]
如果view_func为testapp
,则会将request.current_app设置为testapp.views.some_view
。它可能不是防弹,一些应用程序在子模块中有视图等......但这应该是一个很好的启动器,可以根据您的项目特定需求进行调整。