【发布时间】:2014-10-20 15:56:09
【问题描述】:
我有一个用于显示表单的 FormView,代码如下:
class AddProject(FormView):
template_name = "project/add_project.html"
@method_decorator(check_user_type)
def dispatch(self,request, *args, **kwargs):
return super(AddProject,self).dispatch(request, *args, **kwargs)
def get_form_class(self):
return AddProjectForm
def form_valid(self,form):
#do validation, return response
装饰器 check_user_type 是这样的:
def check_user_type(func):
def wrapped_func(request, *args, **kwargs):
kwargs['invalid_user'] = True
return func(request,*args, **kwargs)
return wrapped_func
在我的装饰器中,我想确保只有特定类型的用户才能看到表单,即如果 request.user.Iam == 'Architect' 或 request.user.Iam == 'Interior Designer' 只能看到表单和其他人会看到一条消息“只有建筑师/室内设计师才能上传照片”。为此,我想插入一个变量“invalid_user”以传递,具体取决于我显示表单或消息的方式。 问题是我无法传递变量:(连同它..还有一个疑问..如果我正确地设计了这样做的想法..?
【问题讨论】:
标签: python django-views python-decorators