2016-06-14 74 views
1

在Rails中,如果我想设置一个“上下文”,该上下文基本上是每个视图需要的对象,例如登录用户的用户对象,或者说存储/帐户/位置对象,我如何在django框架中的每个视图上都可用?如何在django中设置“上下文”类型对象

在Rails我会做这样的事情:

class BaseController 
    before_action :setup_context 


    def setup_user 
    @user = # load user from db 
    @location = # load location for user 
    end 
end 

class HomeController < BaseController 

    def index 
    # I now can use the variables @user and @location 
    end 

end 

确实Django的这些类型,我可以加载的对象,并在我的所有视图中使用它们的事件?

+0

它只是你需要访问的用户吗?如果是这样,那么'request.user'是要访问视图方法的对象。 –

+0

@ShangWang不用用户,我通常这样做:context.user context.location context.account,即添加到上下文对象的所有东西。 –

+1

这是上下文处理器的用途,请参阅http://stackoverflow.com/questions/2893724/creating-my-own-context-processor-in-django或http://stackoverflow.com/questions/2246725/ django-template-context-processors - 具体说就是Django如何在请求中添加'user'对象,并且如果你需要的不仅仅是内建的,你可以自己编写。 –

回答

0

如果我正确理解你的问题,我认为你正在试图做这样的事情。我对Django本人还相当缺乏经验,所以请带上一点盐。

基本例如:

views.py

from django.shortcuts import render 
from exampleapp.models import User # User object defined in your models.py 

def index(request): 
    context = { 'users': User.objects.all() } 
    return render(request, 'exampleapp/example.html', context) 

example.html的

{% if users %} 
    {% for user in users %} 
     <p>{{ user.name }}</p> 
    {% endfor %} 
{% else %} 
    <p>No users.</p> 
{% endif %} 

我道歉,如果我错过了你的问题的标志。

相关问题