我正在嘗試在用戶使用 django-templated-mail 注冊(cè)帳戶后發(fā)送驗(yàn)證電子郵件。這是我在創(chuàng)建用戶后得到的錯(cuò)誤: AttributeError 'dict' object has no attribute 'get_host'所以 Django 試圖調(diào)用 get_host() 并且無法調(diào)用?所以這是一個(gè)錯(cuò)誤,因?yàn)樗鼰o法檢索我的主機(jī)名?有人可以指出我在這里缺少什么嗎?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 回答

飲歌長(zhǎng)嘯
TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
ActivationEmail
將request
用作其初始值設(shè)定項(xiàng)的第一個(gè)位置參數(shù)。您將 thecontext
作為第一個(gè)位置參數(shù)傳遞,這會(huì)導(dǎo)致ActivationEmail
摔倒。
確保在創(chuàng)建request
實(shí)例時(shí)傳遞實(shí)例以及context
to ActivationEmail
。
email.ActivationEmail(self.request, context).send(to)

慕哥6287543
TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個(gè)贊
你實(shí)例化ActivationEmail
不正確。該request
參數(shù)應(yīng)該是一個(gè)HttpRequest
對(duì)象,而不是一個(gè)dict
。
添加回答
舉報(bào)
0/150
提交
取消