我是新手使用python和django。 我想覆盖django管理员登陆页面。所以我可以在templates / admin /文件夹中创建模板base_site.html和index.html。
现在,我可以在index.html中的/ admin(django admin landing)页面上显示静态内容。 我搜索了很多但没有得到,我怎样才能将参数或变量传递给index.html文件。
答案 0 :(得分:3)
一种方法是编写一个自定义模板标记,它将从数据库中获取数据并根据需要呈现输出。
https://docs.djangoproject.com/en/1.7/howto/custom-template-tags/#writing-custom-template-tags
潜在的缺点是每次请求Django-admin索引页时都会运行数据库查询。
更好的方法是创建一个视图,返回您需要显示为JSON的数据。
您的视图将如下所示,您可以从MyModel
获取统计信息。
from django.http import HttpResponse
import json
def get_statisics(request):
j = MyModel.objects.values('field_a', 'field_b')
return HttpResponse(json.dumps(j), content_type='application/json')
您需要在覆盖的模板中添加占位符div
或任何HTML元素,并编写一些从您的视图中获取数据的JavaScript(通过AJAX)并将其添加到模板中。
(function($) {
$(document).ready(function() {
$.ajax({
url: '/stats/', // url to the `get_statistics` view
dataType: 'json'
}).done(function(data) {
// read `data` and put it in your template
$('#placeholder-div').text(data);
});
});
}(django.jQuery));
上面的示例将按原样在占位符元素中显示您的JSON,但您可以使用数据执行任何操作。渲染表格/图表/图表。
然后,您可以缓存get_statistics
视图,以避免每次对其进行AJAX调用时都运行数据库查询。