题
每次我打开一个页面上,我想要得到的当前活动的项目标识。这项工作将通过chacking子和验证当前登录用户可以查看。
一旦我到了我的看法我想是能够做到
tasks = Task.objects.filter(project = current_project)
在current_project(或CURRENT_PROJECT或 current_project ???) 已经建立。
任何人都可以解释的优点/缺点的各种办法,我发现在文档并把我放在正确的轨道?
- 会议
- 中间
- 螺纹
- 内置
这是我怎么做了它在结束:
装饰:
def check4project(fn):
current_project = 'fred'
def check(*args, **kw):
kw['project']=current_project
return fn(*args, **kw)
return check
图例
@login_required
@check4project
@tweetpost
def index(request, project=0):
print project
解决方案
这一切都取决于你的语义上的"当前项目"。这里有一些可能性:
这可能是一个特性的用户:他访问了他的个人资料页,并设置一个当前的项目。这种将储存在该数据库,并且你将访问它与奥姆.
这可能是一个特性的网址,仅仅基于子域。这可以通过与中间件,其中有访问的请求,并且可以例如,分析该主机名称和设置一个定义属性在请求你可以接你的视功能。
类似#2,可以使用视装饰如果检查项目做了一些意见,但不是所有的。这是类似于Django的装修,用于检查的授权。
这可能是一个特性的用户访问该网站:他访问网页的项目,选择一种以上的工作,它的粘性的,直到他选择的另一个项目。这将是最好存储在该届会议,这是专门为这类暂时性储存。
从你的描述,它sounsd喜欢#2或3是对你最好的,这取决于你的观点分之间关心子项目,而不是。
其他提示
你可以做一个context_processor然后得到你的价值从该请求的对象。
你有没有考虑一个 定义模板的标记?
不隶属于 StackOverflow