相关疑难解决方法(0)

django在模板中的请求

我启用了django请求处理器

TEMPLATE_PROCESSORS = (
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.request",
)
Run Code Online (Sandbox Code Playgroud)

我仍然不需要在模板中请求变量.我要手动传递它.使用django 1.0.2在网上的任何地方它似乎只是关于启用请求处理器..

我也使用RequestContext:

 return render_to_response(
    'profile.html',
    {
        'persons':Person.objects.all(),
        'person':Person.objects.get(id=id),
         'request':request,
    },
    context_instance=RequestContext(request)
)
Run Code Online (Sandbox Code Playgroud)

没运气

哦,这个新名字是 TEMPLATE_CONTEXT_PROCESSORS

django processor request

21
推荐指数
3
解决办法
3万
查看次数

访问Django中间件中的当前视图类实例

题:

我正在尝试访问中间件层中的视图实例的属性.

例如,给定一个基于类的视图,如下所示:

# views.py
class MyView(View):
    my_attribute = 'something'
Run Code Online (Sandbox Code Playgroud)

我希望能够my_attribute通过这样的方式处理中间件:

# middleware.py
def process_view(self, request, view_func, view_args, view_kwargs):
    my_attribute = request.view.my_attribute
Run Code Online (Sandbox Code Playgroud)

当然,这不起作用,因为Django不会通过请求对象公开视图实例.有没有办法实现这一目标?

谢谢!


我的第一次尝试:

我最初认为该process_view()方法可能是一个很好的地方.不幸的是,view_func它接收的参数包含一个函数 - 输出MyView.as_view()- 而不是视图实例本身.来自Django文档:

process_view(self,request,view_func,view_args,view_kwargs)

... view_func是Django即将使用的Python函数.(它是实际的函数对象,而不是函数的名称作为字符串.)...


我的第二次尝试:

process_template_response()方法中提供了视图实例的句柄,但它非常笨拙,而且,无论如何,我希望能够my_attribute在中间件堆栈的早期阶段使用它.但这确实有效:

def process_template_response(self, request, response):
    my_attribute = response.context_data['view'].my_attribute
Run Code Online (Sandbox Code Playgroud)

django django-middleware django-class-based-views

7
推荐指数
1
解决办法
2667
查看次数