Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django重新发送激活链接,缺少1个必需的位置参数:';用户';_Python_Django_Django Urls_Django Users_Django Request - Fatal编程技术网

Python Django重新发送激活链接,缺少1个必需的位置参数:';用户';

Python Django重新发送激活链接,缺少1个必需的位置参数:';用户';,python,django,django-urls,django-users,django-request,Python,Django,Django Urls,Django Users,Django Request,我读过类似的问题,但我不明白为什么这不起作用。当用户点击某个链接时,我试图向其发送一封重新激活电子邮件。当用户注册并发送电子邮件时,激活链接会正确生成,但当我尝试再次调用相同的函数来重新激活链接时,它不起作用,因为它缺少一个参数。下面是函数: a计数/视图.py def sendactivationmail(request, user): # Creating token and masing uid of user token = default_token_generator

我读过类似的问题,但我不明白为什么这不起作用。当用户点击某个链接时,我试图向其发送一封重新激活电子邮件。当用户注册并发送电子邮件时,激活链接会正确生成,但当我尝试再次调用相同的函数来重新激活链接时,它不起作用,因为它缺少一个参数。下面是函数:

a计数/视图.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'))
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'),
帐户/url.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'))
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'),
这是将请求和用户参数传递给函数的正确方法吗

编辑:这是用于重定向用户的链接:

<p><a href="{% url 'reactivate' %}">Click here</a> to resend the activation email.</p>
重新发送激活电子邮件


将您的URL模式更改为

urlpatterns = [
    url(r'^reactivate/$', views.sendactivationmail, name='reactivate'),
    .....
]
和html,但用户必须登录才能使用此链接。记得吗

<p><a href="{% url 'reactivate' request.user %}">Click here</a> to resend the activation email.</p>
重新发送激活电子邮件


请在用户单击以发送激活链接的html位置发布您正在传递的用户模型,从用户模型获取特定用户,然后将该用户对象作为参数传递。@Exprator我已经用它更新了问题,但它是一个重定向到重新激活页面的简单链接。@VikasP您能解释一下我怎么做吗?我尝试过User.pk()和User类的其他对象,但我似乎无法理解。@NaeemKhan像这样获取用户对象,
User=User.objects.get(username=“which ever User you want send”)
并传递此用户对象。这解决了此问题。非常感谢你!