首页 > 解决方案 > 在 Django 视图和模板中调用当前用户

问题描述

我有一个在两个用户之间创建聊天频道的视图。我想在发送消息时通知用户(消息来自谁),但我无法访问当前用户(登录并发送消息的用户)。在下面的视图中,我有一个名称显示正确的“to_user”,但是“current_user”没有显示。

这是我的意见.py

@login_required
def create_channel(request, to_user_id):
    to_user = get_user_model().objects.get(pk=to_user_id)
    try:
        channel = Channel.objects.get(users=request.user, users__id=to_user_id)
    except Channel.DoesNotExist:
        channel = Channel.objects.create(
            channel_name='{from_user}-{to_user}'.format(from_user=request.user.username, to_user=to_user)
        )
        channel.users.add(request.user)
        channel.users.add(to_user)
        client = get_client()
        service = client.chat.services(settings.TWILIO_CHAT_SID)
        twilio_channel = service.channels.create(channel.channel_name)

        channel.twilio_chat_id = twilio_channel.sid

        twilio_channel.members.create(identity=request.user.get_twilio_user_id())
        twilio_channel.members.create(identity=to_user.get_twilio_user_id())
        channel.save()
        #email the to_user when they receive a message
        to_user = to_user
        current_user = request.user
        to_user_email = to_user.email
        user_email = current_user.email
        html_message_to_user = render_to_string('send_message_to_user.html', {'user': current_user,
                                                                            'to_user': to_user,
                                                                            'channel': channel,
                                                                            }
        #send email to the to_user
        send_mail(current_user.first_name + ' has sent you a message', plain_message_to_user, 'x@x.com', [to_user_email], fail_silently=False, html_message=html_message_to_user)
        mail_admins('A message has been sent', 'A message has been sent to ' + to_user.first_name + ' from ' + current_user.first_name, fail_silently=False, )

    return HttpResponseRedirect(reverse('chatapp:twilio', kwargs={'pk': channel.pk}))

电子邮件正在正确发送,但未显示“current_user”first_name。我也尝试简单地放置“用户”或“request.user”,这些也不起作用。我不确定如何让当前用户名显示在电子邮件消息或电子邮件模板中。

任何帮助表示赞赏!

标签: pythondjangodjango-views

解决方案


推荐阅读