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())
我有这个结构,基本上我想要的是根据他们的组将用户发送到正确的位置。
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())