【问题标题】:Django TemplateDoesNotExist, when trying to redirect user'sDjango TemplateDoesNotExist,尝试重定向用户的
【发布时间】:2021-02-18 09:53:37
【问题描述】:

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

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/eletricistas/

pluviais/urls.py

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

eletricistas/urls.py

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

]

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

【问题讨论】:

    标签: django django-views django-templates django-urls


    【解决方案1】:

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

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

    那么,你的视图代码可以这样写:

    return render(request, 'pluviais.html')
    

    return render(request, 'electricistas.html')
    

    【讨论】:

    • 我在每个应用程序中都有那个文件夹,我想将用户发送到应用程序的“索引”
    • 这是 OP 中缺少的一条信息!我会尝试:return render(request, '/pluviais/tablet/index.html') 然后,假设你有 /pluvais/templates/tablet/index.html 在那里。
    • 仍然有 TemplateDoesNotExist at ,但我有 index.html 那里
    • 我真的不明白为什么会这样,因为模板在那里
    【解决方案2】:
    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())

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2011-06-13
      相关资源
      最近更新 更多