我有一个名为base.html的模板,看起来简化如下:
<html>
<head>
<title>{% block title %} Title {% endblock %}</title>
</head>
<body>
<div class="header">
{% block header %}My Header{% endblock %}
</div>
<div class="navigation">
{% block navigation %}My Navi{% endblock %}
</div>
<div class="content">
{% block content %}Content{% endblock %}
</div>
</body>
</html>
当我点击导航中的链接时,我想在内容块中呈现新内容而不再重新加载标题和导航。
答案 0 :(得分:1)
您有几个选择:Ajax或iFrames
如果你使用Ajax路由,你可以渲染模板服务器端并在Ajax响应中返回HTML:
import json
from django.http import HttpResponse
from django.template.loader import render_to_string
def render_template(request):
result = {'html': render_to_string('your-template.html', {})}
return HttpResponse(json.dumps(result, ensure_ascii=False),
content_type='application/json')
然后,您可以使用jQuery或其他任何内容在主页面中更新HTML。
或者,您可以使用JavaScript在单击时设置iFrame的src
以呈现视图而不更新整个页面。它取决于在用户体验,维护等方面最适合您的方式。