Django 重新发送激活 link,缺少 1 个必需的位置参数:'user'
Django resend activation link, missing 1 required positional argument: 'user'
我读过类似的问题,但我不明白为什么这不起作用。我正在尝试在用户单击 link 时向他们发送重新激活电子邮件。当用户注册并发送电子邮件时,激活 link 正确生成,但是当我尝试再次调用相同的函数以重新激活 link 时,它不起作用,说它缺少一个参数。这是函数:
acounts/views.py
def sendactivationmail(request, user):
# Creating token and masing uid of user
token = default_token_generator.make_token(user)
uid = urlsafe_base64_encode(force_bytes(user.pk)).decode()
# Sending email for email verification
subject = 'Please Verify Your Email'
from_email = settings.DEFAULT_FROM_EMAIL
to_email = [user.email]
context = {
'url': settings.BASE_URL + reverse('user-activation-link', kwargs={
'uidb64': uid,
'token': token,
}),
}
contact_message = render_to_string('verify_email.html', context)
plain_message = strip_tags(contact_message)
send_mail(subject, plain_message, from_email, to_email, html_message=contact_message, fail_silently=True)
return redirect(reverse('login'))
accounts/urls.py
from django.conf.urls import url
from .views import *
from . import views
from urllib import request
from django.contrib.auth.models import User
urlpatterns = [
url(r'^reactivate/$', views.sendactivationmail(request, User), name='reactivate'),
这是将 request 和 user 参数传递给函数的正确方法吗?
编辑:这是用于重定向用户的link:
<p><a href="{% url 'reactivate' %}">Click here</a> to resend the activation email.</p>
将您的 urlpattern 更改为此
urlpatterns = [
url(r'^reactivate/$', views.sendactivationmail, name='reactivate'),
.....
]
和html,但用户必须登录才能使用此link。记得
<p><a href="{% url 'reactivate' request.user %}">Click here</a> to resend the activation email.</p>
我读过类似的问题,但我不明白为什么这不起作用。我正在尝试在用户单击 link 时向他们发送重新激活电子邮件。当用户注册并发送电子邮件时,激活 link 正确生成,但是当我尝试再次调用相同的函数以重新激活 link 时,它不起作用,说它缺少一个参数。这是函数:
acounts/views.py
def sendactivationmail(request, user):
# Creating token and masing uid of user
token = default_token_generator.make_token(user)
uid = urlsafe_base64_encode(force_bytes(user.pk)).decode()
# Sending email for email verification
subject = 'Please Verify Your Email'
from_email = settings.DEFAULT_FROM_EMAIL
to_email = [user.email]
context = {
'url': settings.BASE_URL + reverse('user-activation-link', kwargs={
'uidb64': uid,
'token': token,
}),
}
contact_message = render_to_string('verify_email.html', context)
plain_message = strip_tags(contact_message)
send_mail(subject, plain_message, from_email, to_email, html_message=contact_message, fail_silently=True)
return redirect(reverse('login'))
accounts/urls.py
from django.conf.urls import url
from .views import *
from . import views
from urllib import request
from django.contrib.auth.models import User
urlpatterns = [
url(r'^reactivate/$', views.sendactivationmail(request, User), name='reactivate'),
这是将 request 和 user 参数传递给函数的正确方法吗?
编辑:这是用于重定向用户的link:
<p><a href="{% url 'reactivate' %}">Click here</a> to resend the activation email.</p>
将您的 urlpattern 更改为此
urlpatterns = [
url(r'^reactivate/$', views.sendactivationmail, name='reactivate'),
.....
]
和html,但用户必须登录才能使用此link。记得
<p><a href="{% url 'reactivate' request.user %}">Click here</a> to resend the activation email.</p>