从django的url获取应用名称

时间:2013-10-09 01:06:16

标签: django django-urls

我知道如何在django中使用url resolve获取url名称。

我想同样处理来自某个应用的所有请求,所以我想我会通过从网址获取应用名称来实现此目的。

我该怎么做?

3 个答案:

答案 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