django 标签 { % block content % } 不工作

django tag { % block content % } isn't working

所以我刚开始学习 Django,我了解基本的标签块,但它在我的页面上效果不佳。我有一个名为 index.html 和 question.html

的页面

我在index.html

中是这样写的
<body>
    <div>
        <div>
            sum content
        </div>
        <div>
            { % block content % }

            { % endblock % }
        </div>
    </div>
</body>

并在 question.html 中像这样:

{ % extends 'index.html' % }

{ % block content % }
<<my content>>
{ % endblock % }

但是 question.html 中的内容没有出现在 index.html 中。我检查了我的设置,没有像其他情况那样的 django-stub。

如果你想知道结构,它是这样的:

djangoProject1
   >djangoProject1
   >myweb
   >static
   >templates
      -index.html
      -question.html

这是我的views.py

def index(request):
    return render(request, 'index.html')


def question(request):
    return render(request, 'question.html')


def formdata(request):
    nama = request.POST.get("namaa")
    umur = request.POST.get("umur")
    komorbid = request.POST.get("penyakit_bawaan")
    ruang = request.POST.get("ketersediaan_ruang")
    demam = request.POST.get("demam")
    lelah = request.POST.get("lelah")
    batuk = request.POST.get("batuk")
    nyeri = request.POST.get("nyeri")
    tersumbat = request.POST.get("tersumbat")
    pilek = request.POST.get("pilek")
    sakit_kepala = request.POST.get("sakit_kepala")
    tenggorokan = request.POST.get("tenggorokan")
    diare = request.POST.get("diare")
    hilang_cium = request.POST.get("hilang_penciuman")
    ruam = request.POST.get("ruam")
    sesak = request.POST.get("sesak")
    sulit_gerak = request.POST.get("sulit_gerak")
    nyeri_dada = request.POST.get("nyeri_dada")
    hasil_rekomendasi = request.POST("hasil_rekomendasi")

    data_resp = DataResponden(nama=nama, umur=umur, penyakit_bawaan=komorbid, ketersediaan_ruang=ruang, demam=demam,
                              lelah=lelah, batuk=batuk, nyeri=nyeri, tersumbat=tersumbat, pilek=pilek,
                              sakit_kepala=sakit_kepala, tenggorokan=tenggorokan, diare=diare,
                              hilang_penciuman=hilang_cium, ruam=ruam, sesak=sesak, sulit_gerak=sulit_gerak,
                              nyeri_dada=nyeri_dada, hasil_rekomendasi=hasil_rekomendasi)
    data_resp.save()
    return render(request, 'question.html')

提前致谢!

像这样去掉标签块中的空格:

改变这个:

{ % block content % }

为此:

{% block content %}

与其他标签块类似。

您似乎对模板的工作方式有些困惑。 index.html 是一个 parent/base 模板,因为它正在被扩展(通过 {% extends 'index.html' %} 标签)。 question.html 是一个子模板,这意味着如果您不做任何更改,它将继承 index.html.

的所有内容

子模板可以使用 {% block %} 标签覆盖父模板的一部分。因此,当呈现网页时,根本不使用父块中的代码(如果有的话)。当你直接渲染父模板时,不会有这样的替换,因为它没有扩展任何东西。

所以为您的文件呈现的HTML应该如下

index.html

<body>
    <div>
        <div>
            sum content
        </div>
        <div>
        </div>
    </div>
</body>

question.html

<body>
    <div>
        <div>
            sum content
        </div>
        <div>
            <<my content>>
        </div>
    </div>
</body>

是的,question.html 中的内容不应该出现在 index.html 中。它以相反的方式工作,index.html 的整个结构用于 question.html,除了你覆盖的东西。

如果你希望索引默认有一些内容,你可以在content块中添加代码。如有必要,它将被任何子模板替换,但当您仅加载时 index.html 它仍然可见。


如果您真的想在 index.html 中插入一些内容,请查看 include tag。这允许跨网页重复使用网站的公共部分。但是您 不会 在您计划包含的任何模板中扩展基本模板。