【问题标题】:Django template Tag not showingDjango模板标签未显示
【发布时间】:2018-09-03 03:44:11
【问题描述】:

我对如何显示 Django 模板标签感到困惑。

我正在使用 Django 2.0.3 和 jQuery 3.3.1

我在一个名为 home.html 的模板上有这个:

//home.html
<script>
$(".game-menu").click(function () {
    $(".game-menu").removeClass("active");
    $(this).addClass("active")
});
$("#buildings").click(function () {
    $("#main-content").load("{% url 'game:buildings' %}");
    });
$("#overview").click(function () {
    $("#main-content").load("{% url 'game:overview' %}");
    });
</script>

<nav class="sidebar">
    <ul class="nav nav-pills flex-column">
        <li class="btn game-menu active" id="overview">
            <a class="nav-link text-white">Übersicht</a>
        </li>
        <li class="btn game-menu" id="buildings">
            <a class="nav-link text-white">Gebäude</a>
        </li>
    </ul>
</nav>

<!-- Page Content Holder -->
<main class="text-white" id="main-content">
    {% include 'game/overview.html' %}
</main>

包括overview.html 可以正常工作(模板标签{{ planet.name }} 显示在页面上:

//overview.html
{% load static %}

<div class="card">
    <h2 class="card-header bg-dark">Übersicht - {{ planet.name }}</h2>
    <div class="card-body">
        <h5 class="card-title">Special title treatment</h5>
        <p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
        <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
</div>

我的

views.py:

from django.template import loader
from django.http import HttpResponse

def overview_view(request):
template = loader.get_template('game/overview.html')
context = {}
return HttpResponse(template.render(context, request))

现在让我感到困惑的部分

如果我单击导航按钮overview 以通过jQuery 将overview.html 加载到&lt;main id=main-content&gt;&lt;/main&gt; 中,则会显示模板,但不会显示模板标签{{ planet.name }}。

【问题讨论】:

    标签: jquery django django-templates


    【解决方案1】:

    您需要在上下文中包含planet,例如:

    def overview_view(request):
        template = loader.get_template('game/overview.html')
        context = {'planet': Planet.objects.get(name='Jupiter')}
        return HttpResponse(template.render(context, request))
    

    请注意,您可以使用render 快捷方式来简化视图。

    from django.shortcuts import render
    
    def overview_view(request):
        context = {'planet': Planet.objects.get(name='Jupiter')}
        return render(request, 'game/overview.html', context)
    

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 2013-04-19
      • 2015-07-10
      • 1970-01-01
      • 2018-09-06
      • 2016-05-18
      • 1970-01-01
      • 2021-12-20
      • 2020-06-04
      相关资源
      最近更新 更多