Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 25.04.2022
Сообщений: 18

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

12.04.2023, 17:35. Показов 582. Ответов 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
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru