【问题标题】:Django 2.0 - Rendering wrong template (with no error)Django 2.0 - 渲染错误的模板(没有错误)
【发布时间】:2018-11-27 09:26:03
【问题描述】:

我正在尝试加载模板visit_form.html,这是一个包含表单的 DetailView。每次我单击来自main.html 的链接时,都会加载错误的模板-> main_detail.html。我已清除浏览器缓存,缓存无效。

目标是让MainVisitDisplay 渲染visit_form.html,但我得到的只是main_detail.html。当我更改main_detail.html 模板的位置时,它会为main_detail.html 引发错误,并在寻找main_detail.html 模板时引发“TemplateDoesNotExist”错误。

我的 MWE 是:

urls.py

from django.conf.urls import url
from . import views
from django.urls import path

urlpatterns = [
    path('', views.index, name='index'),
    path('main/', views.MainListView.as_view(), name='main'),
    path('main/<int:pk>/', views.MainDetailView.as_view(), name='main_detail'),
    path('visit/add/<int:pk>/', views.MainVisitDisplay.as_view(), name='visit_form'),
]

views.py

class MainVisitDisplay(DetailView):
    model = Main
    template = "visit_form.html"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['form'] = VisitForm()
        return context


class MainDetailView(generic.DetailView):
    template_name = "clincher/main_detail.html"
    model = Main

ma​​in.html(模板)网址

{% url 'clincher:visit_form' main.id %}

【问题讨论】:

    标签: django-templates django-2.0


    【解决方案1】:

    这真的很简单。使用template_name = "template_name.html" 而不是template = "template_name.html。不知道为什么它一直渲染其他模板。此外,显然 Django 2.0 不缓存模板,但您可以随意确认或否认这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-03
      • 2020-11-18
      • 2021-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多