notfound.py 文件源码

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

项目:websauna 作者: websauna 项目源码 文件源码
def notfound(request):
    """Not found view which will log the 404s in the site error log."""

    # Try to extract some more information from request
    user = getattr(request, "user", None)
    if user:
        username = getattr(user, "friendly_name", "<unknown>")
    else:
        username = "<anomymous>"

    # TODO: Maybe make this configurable, default to WARN, configurable as INFO for high volume sites
    logger.info("404 Not Found. user:%s URL:%s referrer:%s", request.url, username, request.referrer)

    # Make sure 404 page does not have any status information, as it is often overlooked special case for caching and we don't want to cache user information
    try:
        request.user = None
    except:
        # pyramid_tm 2.0 - this fails
        pass

    # The template rendering opens a new transaction which is not rolled back by Pyramid transaction machinery, because we are in a very special view. This tranaction will cause the tests to hang as the open transaction blocks Base.drop_all() in PostgreSQL. Here we have careful instructions to roll back any pending transaction by hand.
    html = render('core/notfound.html', {}, request=request)
    resp = Response(html)
    resp.status_code = 404

    # Hint pyramid_redis_session not to generate any session cookies for this response
    resp.cache_control.public = True

    transaction.abort()
    return resp
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号