Почему Django продолжает перенаправлять на `/dashboard/` вместо /profile/dashboard или пользовательского URL даже после изменения пути?
Я работаю над проектом Django с отдельными приложениями для аутентификации (auth_app
) и пользовательской панели (dashboard_app
). После успешного входа в систему я ожидаю, что пользователь будет перенаправлен на приборную панель, но Django продолжает перенаправлять на /dashboard/
вместо /profile/dashboard/
или любого другого URL, который я настраиваю.
Вот что я сделал:
Конфигурация URL:
В
dashboard_app/urls.py
:from django.urls import path from .views import DashboardController app_name = 'dashboard_app' urlpatterns = [ path("dashboard/", DashboardController.as_view(), name='dashboard'), ]
В
project/urls.py
я включилdashboard_app
по/profile/
пути:from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('auth/', include('auth_app.urls')), path('profile/', include('dashboard_app.urls')), ]
Контроллер входа:
После успешного входа я использую
reverse
для перенаправления на приборную панель:from django.shortcuts import redirect from django.urls import reverse class LoginController(View): def post(self, request): # Authenticate the user ... return redirect(reverse('dashboard_app:dashboard'))
Проблема:
После успешного входа в систему я перенаправляюсь на /dashboard/
вместо /profile/dashboard/
или любого другого пользовательского пути. Даже если я попытаюсь изменить URL в dashboard_app/urls.py
:
from django.urls import path
from .views import DashboardController
app_name = 'dashboard_app'
urlpatterns = [
path('somewhere/', DashboardController.as_view(), name='dashboard'),
]
однако он продолжает перенаправлять на /dashboard/
вместо profile/somewhere/
.
- У меня нет никаких пользовательских промежуточных программ.
- Я не использую JavaScript; только Jinja для шаблонизации.
HTML-форма, используемая в шаблоне register_page.html
, выглядит следующим образом:
<div id="error-message" style="{% if form.errors %}display:block{% else %}display:none{% endif %};">
<ul>
{% for field in form %}
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
{% endfor %}
</ul>
</div>
<!-- Registration Form -->
<form id="register-form" method="POST" action="{% url 'auth_app:register' %}">
{% csrf_token %}
<!-- Username -->
{{ form.username.label_tag }}
{{ form.username }}<br>
<!-- Password1 -->
{{ form.password1.label_tag }}
{{ form.password1 }}<br>
<!-- Password2 -->
{{ form.password2.label_tag }}
{{ form.password2 }}<br>
<button type="submit">Register</button>
</form>
<p>Already have an account? <a href="{% url 'auth_app:login' %}">Login here</a></p>
</body>
</html>
Что я пробовал:
- Я проверил шаблоны URL в
dashboard_app/urls.py
иproject/urls.py
, чтобы убедиться, что они правильные. - Я попробовал изменить URL перенаправления в
LoginController
, но перенаправление всегда заканчивалось/profile/dashboard/
. - Я очистил кэш Django и перезапустил сервер разработки, но проблема сохраняется.
Вопрос:
Почему Django перенаправляет на /dashboard/
вместо ожидаемого /profile/dashboard/
или любого другого пользовательского пути? Как я могу исправить эту проблему?