python - 在 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”,这些也不起作用。我不确定如何让当前用户名显示在电子邮件消息或电子邮件模板中。
任何帮助表示赞赏!
解决方案
推荐阅读
- python - Python按列名读取xlsx行?
- javascript - 如何替换输入文本值以匹配货币类型输入
- azure - 授予对另一个 Azure 租户中的服务主体的访问权限
- firebase - 阻止用户查找已阻止他们的用户 Firebase
- java - 当用户点击返回时,BottomSheetBehaviour 被拒绝
- nuget - 使用“dotnet pack”生成的 Nuget 包缺少自己的文件
- csv - 以大写形式写入 csv 文件的标题并将字符串添加到 Apache Nifi 中的每个值
- python - 尝试使用数学中的阶乘计算二项式系数的“非类型错误”
- javascript - 反应原生改变方向
- rust - 一种仅查找 Result 的 unwrap() 用法的简单方法