Я использую TamplateView в своих представлениях, чтобы, когда пользователь вошел в систему, он был перенаправлен на его домашнюю страницу.
У меня есть два приложения: app_manager (отвечает за вход в систему и регистрацию) и app_user, где мы можем найти все функции пользователя.
app_manager.views:
return HttpResponseRedirect(reverse("app_user:switcher_user", args=(slugify(username_instance),)))
app_user.views:
def switcher_user(request, username):
print(username)
qs = User.objects.filter(username=username)
print(qs)
if not qs.exists():
print("user not found")
return HttpResponseRedirect(reverse('app_user:access_denied'))
else:
print("user already exists")
return user_index.as_view()(request)
class user_index(LoginRequiredMixin,TemplateView):
print("this is from user_index")
template_name = "app_user/user_index.html"
model = User
context_object_name = 'user'
class ProfilView(LoginRequiredMixin,TemplateView):
template_name = "app_user/user_profil.html"
class GroupsView(LoginRequiredMixin,ListView):
template_name = "app_user/user_groups.html"
app_user.urls:
app_name ="app_user"
urlpatterns = [
re_path(r'^(?P<username>[\w.@+-]+)/', views.switcher_user, name='switcher_user'),
re_path(r'^(?P<username>[\w.@+-]+)/profil', views.ProfilView.as_view(), name='user_profil'),
re_path(r'^(?P<username>[\w.@+-]+)/groups', views.GroupsView.as_view(), name='user_groups'),
В моем приложении app_user у меня есть папка с шаблонами, где мы можем найти все html-страницы для этого типапользователь.В моем base.html:
<li> <a href="{% url 'app_user:user_profil' username=user.username %}">Profil</a></li>
<li> <a href="{% url 'app_user:user_groups' username=user.username %}">Groups</a></li>
Проблема здесь в том, что когда я нажимаю на Profil или Groups, чтобы перейти на страницу profil или на страницу группы, я получаю правильный URL в адресной строке браузера, нонеправильный HTML-файл.Он всегда читает одно и то же представление: switcher_user, а затем user_index и выводит мне одну и ту же страницу "user_index.html". !!