我知道如何在 django 中使用 url resolve 获取 url 名称。
我想类似地处理来自某个应用程序的所有请求,所以我想我会通过从 url 获取应用程序名称来做到这一点。
我怎样才能做到这一点?
我知道如何在 django 中使用 url resolve 获取 url 名称。
我想类似地处理来自某个应用程序的所有请求,所以我想我会通过从 url 获取应用程序名称来做到这一点。
我怎样才能做到这一点?
路径你会很头疼,因为你必须应用很多拆分。一个更好的方法是:
request.resolver_match
其中包含 :
{'app_name': '', '_func_path': 'app_name.views.ClassName', 'args': (), 'func': , 'url_name': 'url-for-class', 'namespace': '' , 'kwargs': {}, 'view_name': 'name-for-class', 'app_names': [], 'namespaces': []}
使用 request.resolver_match._func_path
将获取您的 app_name 以及 ClassName
视图并不像模型那样真正绑定到应用程序。它们实际上只是 python 函数或类(取决于 FBV/CBV)。您可以解析视图并解析模块名称以“猜测”它来自哪个应用程序。
如果您使用基于类的视图,更好的解决方案是为实现该功能的给定应用程序中的所有视图创建一个公共基础视图。
这是样板:
class SpecificAppView(View):
def dispatch(self, request, *args, **kwargs):
# Do something specific
super(SpecificAppView, self).dispatch(request, *args, **kwargs)
class FirstView(SpecificAppView):
pass
class AnotherView(SpecificAppView):
pass
我最终通过从 request.path 中提取信息来得到这个