template_name无法解析某些视图

时间:2019-03-27 17:25:54

标签: django django-views

我的Web应用程序运行正常,但是在进行了ldap配置(仅更改settings.py中有关ldap的配置)之后,我到某些页面的路由似乎停止了。我的urls.py似乎正常,但是当我转到查看页面时,我想查看它给了我另一个template.html文件。

我的urls.py

appname = 'app'
urlpatterns = [
    path('logout/', views.LogOutView.as_view(), name='logout'),
    path('', views.LoginView.as_view(), name='login'),
    path('index/search', views.SearchView.as_view(), name="search"),
    path('index/<slug:key>', views.EpicView.as_view(), name="detail"),
    **path('index/exec_report', views.ExecView.as_view(), name = "exec"),
    **path('index/exec_version_report', views.ExecVersionView.as_view(), name = "version"),
    path('index/', views.IndexView.as_view()),
]

现在所有路径都可以正常工作,但是旁边带有**的2条路径是随EpicView模板一起返回的路径

因此在index.html中,您可以单击搜索将您带到index/exec_version_report

index.html

<form method="GET" action = "{% url 'app:version' %}">

 <select name ="versionA" >
     <option value = 0>0</option>
 </select>

 <select name = "versionB">
     <option value = 4.2> 4.2</option>
     <option value = 4> 4.0</option>
 </select>
  <input  type="submit" value="Search"/>
    </form>

现在,当我单击“搜索”时,URL路由是正确的,但它给了我错误的模板,但是您可以看到template_name不能解析为我给它的模板:

 class ExecVersionView(LoginRequiredMixin, TemplateView):
    template_name= 'APP/exec.html'

    def get(self, request, *args, **kwargs):
        self.versionA = request.GET.get('versionA','')
        self.versionB = request.GET.get('versionB','')
        return super().get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):
        versionBint = Version(self.versionB)
        versionAint = Version(self.versionA)
        context = super(ExecVersionView, self).get_context_data(**kwargs)
        open_low = ExecVersion.objects.filter(version__gte= versionAint, version__lte=versionBint, severity = 'Low', status='Open')
        context['open_low'] = open_low
        return context

现在由于某种原因,该视图将为我提供错误的模板文件,并且正在同时处理这两个**路线/视图

我100%确定这是正确的.html文件位置

1 个答案:

答案 0 :(得分:3)

"index/exec_report"匹配路径"index/<slug:key>",并且Django返回匹配的第一条路径。因此它将返回带有key =“ exec_report”的详细信息视图。

只需将带有条的细节路径移动到两条路径都不起作用的位置。