template_name не разрешается для некоторых представлений - PullRequest
0 голосов
/ 27 марта 2019

Мое веб-приложение работало нормально, но после выполнения некоторых настроек ldap (только изменения, касающиеся ldap в settings.py), моя маршрутизация на определенные страницы, похоже, тормозила.Мой urls.py, кажется, в порядке, но когда я иду на страницу просмотра, я хочу видеть, это дает мне другой файл template.html.

my 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"но он дает мне неправильный шаблон, но вы можете видеть, что имя шаблона не соответствует тому, который я ему дал:

 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 Ответ

3 голосов
/ 27 марта 2019

"index/exec_report" соответствует пути "index/<slug:key>", и Django возвращает первый соответствующий путь. Поэтому он возвращает подробный вид с ключом = "exec_report".

Просто переместите ваш путь детализации с слагом в положение после двух путей, которые не работают.

...