2014-02-12 2 views
0

У меня есть шаблон под названием 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

Вы имеете в виду что-то вроде AJAX i.e., избегайте обновления всей страницы? – arocks

+0

AJAX (может быть, с позвоночником?) – lalo

+0

принципиально да, но я бы предпочел сделать что-то, что нравится. Фреймы в html, где ку могут загрузить страницу теперь только в кадре. Я думал, что джанго сможет сделать что-то подобное очень просто. Или нет? – ThaPhil

ответ

1

У вас есть несколько вариантов: Ajax или плавающие фреймы

Если вы идете маршрут Ajax, вы можете сделать шаблон на стороне сервера и возвращают HTML в ответ Ajax:

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 для установки src iFrame при щелчке, чтобы визуализировать представление без обновления всей страницы. Это зависит от того, что лучше для вас с точки зрения пользовательского опыта, обслуживания и т. Д.

+0

Да, с AJAX вы можете использовать json-ответы, а это немного быстрее, чем html-ответы, и используя что-то вроде позвоночника или углового, вы можете сделать это хорошо. – lalo

+0

Кажется, что любые теги '

Смежные вопросы