我不明白为什么我的代码无法正常工作。在此之前,但现在,当我运行服务器并进行测试时,代码不起作用。
用户注册时,我向他发送激活电子邮件,如下所示:
def send_activation_email(serializer, request, user):
current_site = get_current_site(request)
message = render_to_string('acc_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
mail_subject = 'Activate your blog account.'
to_email = serializer.data['email']
email = EmailMessage(mail_subject, message, to=[to_email])
email.send()
acc_active_email.html
{% autoescape off %}
Hi {{ user.username }},
Please click on the link to confirm your registration,
http://{{ domain }}{% url 'activate' uidb64=uid token=token %}
{% endautoescape %}
和我的网址文件
.
.
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
views.activate_account, name='activate'),
.
.
但是我有这个错误:
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'activate' with keyword arguments '{'uidb64': b'NDM', 'token': '4qz-8f770502bd8b02786da9'}' not found. 1 pattern(s) tried: ['activate/(?P<uidb64>[0-9A-Za-z_\\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$']
突出显示此行 http://{{ domain }}{% url ‘activate’ uidb64=uid token=token %}
在Django 2.0和2.1中,你应该decode()
在对base64进行编码后调用uid,以将其转换为字符串:
message = render_to_string('acc_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)).decode(),
'token': account_activation_token.make_token(user),
})
有关更多信息,请参见Django 2.0发行说明中的说明。
在Django 2.2+中,urlsafe_base64_encode
返回一个string,因此无需解码。
message = render_to_string('acc_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
使用可以编写与Django <1.11、2.0-2.1和2.2+兼容的代码force_text
。请注意,以下内容未经测试。
from django.utils.encoding import force_text
message = render_to_string('acc_active_email.html', {
'user': user,
'domain': current_site.domain,
'uid': force_text(urlsafe_base64_encode(force_bytes(user.pk))),
'token': account_activation_token.make_token(user),
})
force_text
删除对Django <2.2的支持后,你可以删除和使用第二个代码片段。
问题内容: 渲染时捕获到异常: 找不到带有参数’()’和关键字参数’{}’的’products.views.’filter_by_led’。 我能够从shell成功导入,并且可以正常工作,因此路径应该正确。 这是urls.py: 这是生成错误的地方: 我不明白,因为这可以在同一个文件中正常工作: 这是函数定义: 我不明白为什么Django会认为该函数无法为该函数找到Reverse。 我删除了所有文
问题内容: 渲染时捕获到异常: 找不到带有参数和关键字参数的。 我能够从shell 成功导入,并且可以正常工作,因此路径应该正确。 这是: 这是生成错误的地方: 我不明白,因为这可以在同一个文件中正常工作: 这是函数定义: 我不明白为什么Django会认为该函数无法为该函数找到Reverse。 我删除了所有文件,然后重新启动了Apache。 我究竟做错了什么? 问题答案: 我想到的三件事是: 只是
问题内容: 我有这样的网址格式: 它在浏览器中可以正常工作,但是当我在外壳中执行此操作时,可以进行测试: 我感到恐惧: 我在这里想念什么? 问题答案: 你必须指定
目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。 关键字参数 是指使用形式参数的名字来确定输入的参数值。通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可。 因此,Python 函数的参数名应该具有更好的语义,这样程序可以立刻明
本文向大家介绍对django2.0 关联表的必填on_delete参数的含义解析,包括了对django2.0 关联表的必填on_delete参数的含义解析的使用技巧和注意事项,需要的朋友参考一下 一对多(ForeignKey) 一对一(OneToOneField) 从上面外键(ForeignKey)和一对一(OneToOneField)的参数中可以看出,都有on_delete参数,而 django
问题内容: 当读取a的初始化程序时,我看到一些参数默认为value 。什么是关键词代表什么? 问题答案: 这不是有效的Swift代码,它是即时生成的。 在这里意味着有一些默认值,但发电机不能想像它适合你才能看到它。从技术上来说,默认值是一个内联函数,因此不能轻易将其转换为简单的声明。 您可以看到类似的声明 其中默认为(在Swift 1.x中)和默认为(在Swift 1.x中)。 在的情况下,默认值