Python 如何修改Django';在定制的Pinax安装上需要什么样的decorator?
我想让Django的Python 如何修改Django';在定制的Pinax安装上需要什么样的decorator?,python,django,pinax,Python,Django,Pinax,我想让Django的@login\u requireddecorator测试用户上的某个特定字段是否已设置为“无”。(添加的字段为null=true,默认值为None。) 新创建的用户对象的字段值确实为None,但对@login\u required的明显更改并没有对行为产生明显的影响(我重新启动Gunicorn以确保重新读取)@login\u required如果用户经过身份验证,即使添加的字段为None,也会呈现视图 目前,稍微更改的@login\u required为: def login
@login\u required
decorator测试用户上的某个特定字段是否已设置为“无”。(添加的字段为null=true,默认值为None。)
新创建的用户对象的字段值确实为None,但对@login\u required
的明显更改并没有对行为产生明显的影响(我重新启动Gunicorn以确保重新读取)@login\u required
如果用户经过身份验证,即使添加的字段为None,也会呈现视图
目前,稍微更改的@login\u required
为:
def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME):
"""
Decorator for views that checks that the user is logged in, redirecting
to the log-in page if necessary.
"""
actual_decorator = user_passes_test(
lambda u: u.foo != None,
redirect_field_name=redirect_field_name
)
if function:
return actual_decorator(function)
return actual_decorator
最初的lambda是在
u上的。是经过身份验证的()
我从您的代码中看到,您实际遇到过,这实际上是您应该使用的,而不是直接修改所需登录的源代码
用户_通过了_test(),接受一个必需的参数:一个接受
如果允许用户查看页面,则返回True。
请注意,用户_通过了_test(),但不会自动检查
用户不是匿名的
您只需创建一个函数来确保满足您的条件。这确保了所有内容都在代码库中(对django的更新不会破坏您的应用程序),并使调试变得更加容易
您的测试函数可能是
def is_foo(user):
if user.is_authenticated() and user.foo :
return True