我有一个用于显示表单的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
装饰器检查用户类型如下:
def check_user_type(func):
def wrapped_func(request, *args, **kwargs):
kwargs['invalid_user'] = True
return func(request,*args, **kwargs)
return wrapped_func
在我的decorator中,我想确保只有特定类型的用户才能看到表单,即如果request.user.Iam=='Architect'或request.user.Iam=='Interior Designer'只看到表单,而其他人则看到一条消息“只有架构师/室内设计师才能上传照片”。为此,我想插入一个要传递的变量'invalid_user',取决于我显示的表单或消息。 问题是我无法传递变量:(以及它.)。。还有一个疑问。。如果我的想法正确的话
如果我理解正确,您希望将此参数传递给
check_user_type
decorator,对吗?然后,您需要在装饰器中嵌套另一个函数,使用闭包在其中设置变量。差不多然后,参数在两个内部函数的作用域内都可用
相关问题 更多 >
编程相关推荐