Django TemplateDoesNotExist,当试图重定向用户的

Django TemplateDoesNotExist, when trying to redirect user's

我有这个结构,基本上我想要的是根据他们的组将用户发送到正确的位置。

myproject/
     |-- myproject
          |--urls.py
          |--settings.py
          |--views.py
     |-- pluviais/
          |--urls.py
          |--views.py
     |-- eletricistas/
          |--urls.py
          |--views.py

所以当他们登录时,我的 settings.py 重定向到索引,(LOGIN_REDIRECT_URL = 'index')

myproject/urls.py

from .views import index
urlpatterns = [
                  path('', views.index, name='index'),
                  path('admin/', admin.site.urls),
                  path('login/', auth_views.LoginView.as_view(template_name='login.html'), name='login'),
                  path('logout/', auth_views.LogoutView.as_view(), name='logout'),

                  path('pluviais/', include('pluviais.urls')),
                  path('eletricistas/', include('eletricistas.urls')),
                  
              ]
                                                                                           document_root=settings.MEDIA_ROOT)

myproject/views.py

from django.contrib.auth.models import Group,User
from django.shortcuts import render, redirect

def index(request):
    users_in_group = Group.objects.get(name="tablet").user_set.all()
    if request.user in users_in_group:
        user_responsaveis_pluviais = User.objects.filter(username=request.user, groups__name='Responsáveis - pluviais').exists()
        user_chefes_pluviais = User.objects.filter(username=request.user, groups__name='Chefes - pluviais').exists()
        print(user_responsaveis_pluviais)
        if user_responsaveis_pluviais == True or user_chefes_pluviais==True:

            return render(request, 'intervencao')

        else:

            return render(request, 'tarefas')

如您所见,这个想法只是根据用户所在的组,将他们重定向到正确的位置(或转到 pluviais/电力人/

pluviais/urls.py

urlpatterns = [
    path('tablet', views.intervencao, name='intervencao'),
]

eletricistas/urls.py

urlpatterns = [
    path('tablet', views.tarefas, name='tarefas'),

]

问题是总是给我错误 TemplateDoesNotExist at /,所以也许我做错了。

render() 是一个 django 函数,它接受一个 request 对象和一个模板 (HTML) 路径。

您需要在基础项目中创建一个 templates 目录,并在该文件夹中创建一个 HTML 文件。

那么,您的视图代码可以是:

return render(request, 'pluviais.html')

return render(request, 'electricistas.html')
def index(request):
    users_in_group = Group.objects.get(name="tablet").user_set.all()
    if request.user in users_in_group:
        user_responsaveis_pluviais = User.objects.filter(username=request.user, groups__name='Responsáveis - pluviais').exists()
        user_chefes_pluviais = User.objects.filter(username=request.user, groups__name='Chefes - pluviais').exists()
        user_responsaveis_eletricistas = User.objects.filter(username=request.user, groups__name='Responsáveis - eletricistas').exists()
        print(user_responsaveis_pluviais)
        print(user_responsaveis_eletricistas)

        if user_responsaveis_pluviais == True or user_chefes_pluviais==True:
            return HttpResponseRedirect(reverse('intervencao'))
        elif user_responsaveis_eletricistas ==True:
            return HttpResponseRedirect(reverse('tarefas'))      
    else:
        return HttpResponseRedirect('/admin')

基本上我需要的是 HttpResponseRedirect(reverse())