Джанго читал один и тот же CBV для разных URL - PullRequest
0 голосов
/ 06 мая 2019

Я использую 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". !!

1 Ответ

0 голосов
/ 06 мая 2019

Вы не прекратили свои регулярные выражения.

re_path(r'^(?P<username>[\w.@+-]+)/$', ...)
...