我对如何显示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
加载到<main id=main-content></main>
,则会显示模板,但不会显示模板标记{{ planet.name }}
。
答案 0 :(得分: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)