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