decorators.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:nav 作者: UNINETT 项目源码 文件源码
def requires_post(redirect='alertprofiles-overview', required_args=None):
    """Decorates a view function to require a POST request.

    If the view function was not reached via a POST request, a session
    error message is generated, and the client is redirected to the
    specified redirect view.

    """
    def _required_args_are_present(request):
        if required_args is not None:
            for arg in required_args:
                if not request.POST.get(arg):
                    return False
        return True

    def _decorator(func):
        def _handler(request, *args, **kwargs):
            error = None
            if request.method == 'POST':
                if _required_args_are_present(request):
                    return func(request, *args, **kwargs)
                else:
                    error = _('Required post-data were not supplied')
            else:
                error = _('There was no post-data')

            new_message(request, error, Messages.ERROR)
            return HttpResponseRedirect(reverse(redirect))

        return wraps(func)(_handler)

    return _decorator
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号