0 / 0 / 0
Регистрация: 25.04.2022
Сообщений: 18

Не получается перейти по URL адресу, отправленному по почте для подтверждения регистрации (ошибка 404)

12.04.2023, 17:35. Показов 628. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
URL адрес, отправленный на почту по какой-то причине не корректен. Само письмо в котором содержится ссылка, тапнув на которую я должен автоматически логиниться и мой аккаунт должен меня статус на is_active=True не работает. Появляется исключение Page not found (404)

Код account/views.py:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def account_register(request):
 
    if request.user.is_authenticated:
        return redirect("main:home")
 
    if request.method == "POST":
        registerForm = RegistrationForm(request.POST)
        if registerForm.is_valid():
            user = registerForm.save(commit=False)
            user.email = registerForm.cleaned_data["email"]
            user.set_password(registerForm.cleaned_data["password"])
            user.is_active = False
            user.save()
            current_site = get_current_site(request)
            subject = "Activate your Account"
            message = render_to_string(
                "account/account_activation_email.html",
                {
                    "user": user,
                    "domain": current_site.domain,
                    "uid": urlsafe_base64_encode(force_bytes(user.pk)),
                    "token": account_activation_token.make_token(user),
                },
            )
            user.email_user(subject=subject, message=message)
            return render(request, "account/register_email_confirm.html", {"form": registerForm})
    else:
        registerForm = RegistrationForm()
    return render(request, "account/registration.html", {"form": registerForm})
 
 
def account_activate(request, uidb64, token):
    try:
        uid = force_str(urlsafe_base64_decode(uidb64))
        user = Author.objects.get(pk=uid)
    except (TypeError, ValueError, OverflowError, user.DoesNotExist):
        user = None
    if user is not None and account_activation_token.check_token(user, token):
        user.is_active = True
        user.save()
        login(request, user)
        return redirect("main:home")
    else:
        return render(request, "account/activation_invalid.html")

КОД переопределенной модели пользователя account/models.py:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Author(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(_('почтовый адрес'), unique=True)
    user_name = models.CharField(max_length=150)
    mobile = models.CharField(max_length=20, blank=True)
 
    # User Status
    is_active = models.BooleanField(default=False)
    is_staff = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
 
    objects = CustomAccountManager()
 
    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['user_name']
 
    class Meta:
        verbose_name = "Аккаунт"
        verbose_name_plural = "Аккаунты"
 
    def __str__(self):
        return self.user_name
 
    def email_user(self, subject, message):
        send_mail(
            subject,
            message,
            'djangowebforum@gmail.com',
            [self.email],
            fail_silently=False,
        )

КОД account/urls.py

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
from account.forms import UserLoginForm
 
app_name = 'account'
 
urlpatterns = [
    path('login/', views.MyLoginView.as_view(template_name='account/login.html',
                                             form_class=UserLoginForm), name='login'),
    path('logout/', auth_views.LogoutView.as_view(next_page='/account/login/'), name='logout'),
 
    path('register/', views.account_register, name='register'),
    path('activate/<slug:uidb64>/<slug:token>)/', views.account_activate, name='activate'),
]

КОД токена активации account/tokens.py:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from django.contrib.auth.tokens import PasswordResetTokenGenerator
from six import text_type
 
 
class AccountActivationTokenGenerator(PasswordResetTokenGenerator):
    def _make_hash_value(self, user, timestamp):
        return (
            text_type(user.pk) + text_type(timestamp) +
            text_type(user.is_active)
        )
 
 
account_activation_token = AccountActivationTokenGenerator()

КОД письма шаблон:

HTML5
1
2
3
4
5
6
7
{% autoescape off %}
Hi {{ user.user_name }},
 
Your account has successfully created. Please click below link to activate your account
 
http://{{ domain }}{% url 'account:activate' uidb64=uid token=token %}
{% endautoescape %}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.04.2023, 17:35
Ответы с готовыми решениями:

Реализация подтверждения регистрации по электронной почте
Делаю веб приложение на Java, используется Spring, Hibernate. Необходимо реализовать подтверждение регистрации по электронной почте....

Ошибка при отправке письмом с ссылкой подтверждения регистрации
При регистрации нового пользователя, после нажатия submit вылитает ошибка: Удаленный сертификат недействителен согласно результатам...

Ошибка 404 при регистрации
При регистрации выскакивает ошибка 404, хотя этот же проект запускается не у меня на ноуте, БД создал аналогичную той, в чем может быть...

2
 Аватар для kazak
3604 / 2744 / 356
Регистрация: 11.03.2009
Сообщений: 6,308
12.04.2023, 18:42
Цитата Сообщение от RRoxxxsii Посмотреть сообщение
path('activate/<slug:uidb64>/<slug:token>)/', views.account_activate, name='activate'),
Просто скопировали откуда-то или понимаете что делаете?
0
0 / 0 / 0
Регистрация: 25.04.2022
Сообщений: 18
12.04.2023, 18:51  [ТС]
Добавлено через 51 секунду
kazak, Скопировал из своего прошлого проекта, где все работало, но уже разобрался что проблема была в скобке, которая взялась не понятно откуда, видимо случайно пальцем тыкнул
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2023, 18:51
Помогаю со студенческими работами здесь

Ошибка 404 при регистрации
Добрый день, третий день уже занимаюсь этой проблемой. Пробовал привлечь саппортов со своего хостинга, у знакомых спрашивал.... проблема не...

Проблемы при отправке письма для подтверждения регистрации
Для подтверждения регистрации пользователя в мобильном приложении отправляю на почту get запрос с данными в виде ссылке а точнее хочу что...

Ошибка при регистрации в Яндекс.почте через другой домен
Проблема вот в чем: был такой сайт - e-mail.ru и была у него своя почта. И был у меня там свой ящик. То ли от лени, то ли от еще какой...

Не приходит письмо для подтверждения, указанное при регистрации на сайте
У меня есть сайт, я его запускаю на XAMPP и самое главное! - там есть форма для входа. Я перехожу по имеющейся там ссылке &quot;Don't have...

Как спуститься на url уровнем ниже, или перейти из url одного приложения в url другого?
Допустим есть приложение cat и приложение dog. В корневом urls.py прописанно: from django.contrib import admin from django.urls...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru