我的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文件位置
答案 0 :(得分:3)
"index/exec_report"
匹配路径"index/<slug:key>"
,并且Django返回匹配的第一条路径。因此它将返回带有key =“ exec_report”的详细信息视图。
只需将带有条的细节路径移动到两条路径都不起作用的位置。