我知道如何在django中使用url resolve获取url名称。
我想同样处理来自某个应用的所有请求,所以我想我会通过从网址获取应用名称来实现此目的。
我该怎么做?
答案 0 :(得分:0)
视图与应用程序的关系并不像模型一样。它们实际上只是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
答案 1 :(得分:0)
我最终通过从request.path
中提取信息来获得此信息答案 2 :(得分:0)
路径你会很头疼,因为你必须应用大量的分裂。更好的方法是:
request.resolver_match
包含:
{' app_name':'',' _func_path':' app_name.views.ClassName',' args&# 39; :(), ' func':,' url_name': ' url-for-class','命名空间':'',' kwargs':{},' view_name&#39 ;: ' name-for-class',' app_names':[],'命名空间':[]}
使用request.resolver_match._func_path
将获取app_name和ClassName