Неверное перенаправление на страницу входа из профиля и ссылки выхода после входа пользователяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Неверное перенаправление на страницу входа из профиля и ссылки выхода после входа пользователя

Сообщение Anonymous »

Контекст:
Я работаю над проектом Django, в котором реализовал аутентификацию пользователей с функциями профиля и выхода из системы. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь получить доступ к профилю или ссылкам выхода из системы с панели навигации, она перенаправляет меня на страницу входа вместо перехода к профилю пользователя или выполнения выхода из системы.
Ссылка на профиль:
следует перейти на страницу профиля пользователя, если пользователь вошел в систему.
Ссылка для выхода:
Необходимо выйти из системы и перенаправить пользователя на домашнюю страницу.
Текущая настройка:
Шаблоны (base.html):

Код: Выделить всё

{% if logged_in %}
[url=#]
{{ customer_name }}
[/url]
[list]
[*][url={% url ]Profile[/url]
[*][url={% url ]Logout[/url]
[/list]
{% else %}
[url={% url ]Login[/url]
{% endif %}
Просмотры:

Код: Выделить всё

from django.shortcuts import redirect, render
from django.contrib.auth import authenticate, login as auth_login, logout as auth_logout
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .models import costumer

@login_required
def profile_view(request):
email = request.GET.get('email')
if email:
try:
user = costumer.objects.get(email=email)
if user.id == request.session.get('customer_id'):
return render(request, 'profile.html', {'user': user})
else:
return redirect('index')
except costumer.DoesNotExist:
return redirect('index')
else:
return redirect('index')

def logout_view(request):
request.session.flush()
auth_logout(request)
return redirect('index')

def login_view(request):
if request.method == 'POST':
email = request.POST.get('email')
password = request.POST.get('password')

try:
customer = costumer.objects.get(email=email)
if customer.check_password(password):
request.session['customer_id'] = customer.id
request.session['logged_in'] = True
request.session['customer_name'] = f"{customer.first_name} {customer.last_name}"
request.session['customer_email'] = customer.email
messages.success(request, "Logged in!!")
return redirect('index')
else:
messages.error(request, 'Incorrect password')
except costumer.DoesNotExist:
messages.error(request, 'Email not found')

return render(request, 'login.html')
URL-адреса:

Код: Выделить всё

from django.urls import path
from . import views

urlpatterns = [
path('', views.index, name='index'),
path('login/', views.login_view, name='login'),
path('logout/', views.logout_view, name='logout'),
path('profile/', views.profile_view, name='profile'),
]
Управление сеансом:
  • Переменные сеанса устанавливаются в login_view и очищено в logout_view.
Выполненные шаги по отладке:
  • Распечатываются данные сеанса в разных представлениях, чтобы убедиться, что customer_id и customer_name установлены правильно.
  • Замечено, что при нажатии на ссылку профиля или выхода из системы всегда перенаправляет на страницу входа.
Проблема:
Не могли бы вы помочь мне выяснить, почему происходит перенаправление этих ссылок? на страницу входа вместо отображения профиля или правильного выхода из системы? В частности, мне нужна помощь в проверке обработки сеанса и обеспечении правильного перенаправления.

Подробнее здесь: https://stackoverflow.com/questions/787 ... r-user-log
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»