Django повторно отправит ссылку активации, пропустив 1 обязательный позиционный аргумент: 'user' - PullRequest
1 голос
/ 20 июня 2019

Я читал похожие вопросы, но не могу понять, почему это не работает. Я пытаюсь отправить электронное письмо с повторной активацией, когда пользователь нажимает на ссылку. Ссылка для активации генерируется правильно, когда пользователь регистрируется и электронное письмо отправляется, но когда я пытаюсь снова вызвать ту же функцию для повторной активации ссылки, она не работает, говоря, что отсутствует один параметр. Вот функция:

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'))

Счета / 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 в функцию?

РЕДАКТИРОВАТЬ: Это ссылка, которая используется для перенаправления пользователя:

<p><a href="{% url 'reactivate' %}">Click here</a> to resend the activation email.</p>

1 Ответ

1 голос
/ 20 июня 2019

измените свой urlpattern на этот

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>
...