为了账号安全,请及时绑定邮箱和手机立即绑定

Django 模板化邮件“dict”对象没有属性“get_host”

Django 模板化邮件“dict”对象没有属性“get_host”

开心每一天1111 2021-08-14 15:50:20
我正在尝试在用户使用 django-templated-mail 注册帐户后发送验证电子邮件。这是我在创建用户后得到的错误: AttributeError 'dict' object has no attribute 'get_host'所以 Django 试图调用 get_host() 并且无法调用?所以这是一个错误,因为它无法检索我的主机名?有人可以指出我在这里缺少什么吗?class UserListView(generics.ListCreateAPIView):    serializer_class = UserSerializer    def perform_create(self, serializer):        user = serializer.save()        context = {'user': user}        to = user.email        email.ActivationEmail(context).send(to)class UserSerializer(serializers.ModelSerializer):    class Meta:        model = User        fields = ('id', 'password', 'email')        extra_kwargs = {'password': {'write_only': True}}    def create(self, validated_data):        password = validated_data.pop('password')        user = super(UserSerializer, self).create(validated_data)        user.set_password(password)        user.save()        return userclass ActivationEmail(BaseEmailMessage):    template_name = 'email/activation.html'    def get_context_data(self):        context = super(ActivationEmail, self).get_context_data()        user = context.get('user')        context['uid'] = utils.encode_uid(user.pk)        context['token'] = default_token_generator.make_token(user)        context['url'] = 'verify/{uid}/{token}'.format(**context)        return context
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

ActivationEmailrequest用作其初始值设定项的第一个位置参数。您将 thecontext作为第一个位置参数传递,这会导致ActivationEmail摔倒。

确保在创建request实例时传递实例以及contextto ActivationEmail

email.ActivationEmail(self.request, context).send(to)


查看完整回答
反对 回复 2021-08-14
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

你实例化ActivationEmail不正确。该request参数应该是一个HttpRequest对象,而不是一个dict


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 153 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信