2014-02-12 71 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即避免整個頁面刷新? – arocks

+0

AJAX(可能與骨幹?) – lalo

+0

主要是的,但我寧願做一些喜歡在HTML框架湊在那裏可以只是在一個框架加載頁面現在。我以爲django能夠以一種非常簡單的方式做這樣的事情。或不? – ThaPhil

回答

1

你有兩個選擇:阿賈克斯或iFrame

如果你去阿賈克斯路線,你可以渲染一個模板服務器端和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上點擊渲染視圖,而無需更新整個頁面。這只是取決於什麼是最適合你在用戶體驗,維護方面等

+0

是的,AJAX可以使用JSON的應對措施,這是一個快一點的是HTML的響應,並使用類似的骨幹或角度,你可以把它做好 – lalo

+0

看來,當模板通過'呈現的任何'