Django ブログサイト middleware.py フック処理

2020/07/04 (更新:2020/11/19)

リクエストのフック処理です。

view 関数のフック処理process_viewで、投稿者情報取得等の共通処理を実装します。

process_view

def process_view(self, request, view_func, view_args, view_kwargs):
    author_name = view_kwargs.get('author_name')
    if author_name:
        author = models.Author.objects.get(user__username=author_name)
        if author:
            view_kwargs['author'] = author
            posts = models.Post.objects.values('id', 'template_text').filter(author=author.id)
            view_kwargs['post_ids']  = {post['template_text']:post['id'] for post in posts}
    session_messages = request.session.pop(constants.SESSION_MESSAGES, None)
    if session_messages:
        for message in session_messages:
            if message['level'] == messages.INFO:
                messages.info(request, message['message'])
            elif message['level'] == messages.WARNING:
                messages.warning(request, message['message'])
            elif message['level'] == messages.ERROR:
                messages.error(request, message['message'])
    return None