Part1: 提高查询效率
newses = News.objects.select_related('category', 'author').get(id=1) # category和author字段为News表的外键, 使用select_related查询,会等待前端请求完毕后一次性查询出所有的数据
前端:
{% for news in newses %}
{{ news.category.name }}
{{ news.author.username }} # 这两个字段为外键
{% endfor %}
这样能减少查询的次数,提高效率
Part2:
后端通过djangorestframework传送art-tenplate模板需要的数据
详情下一篇 。。https://www.cnblogs.com/tangpg/p/9300256.html
art-template模板
引入template-web.js文件,官网Github中lib文件夹中,can copy after Raw
并声明django不解析该模板,
each模块的使用,
{* 用一个type="text/html"的script标签存放模板: HTML代码 *}
{% verbatim %} 向django声明不解析该模板 <script id="test" type="text/html"> <h1>{{title}}</h1> <ul> {{each list as value i}} <li>索引 {{i + 1}} :{{value}}</li> {{/each}} </ul> </script>
{% endverbatim %} // 渲染模板 js代码 var data = { title: '标签', list: ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'] }; var html = template('test', data); // document.getElementById('content').innerHTML = html;
// 指定添加到box这个地方
var box = $('#box-for-art-template-model');
box.append(html)
django 的 model的pk属性代表model的primary key
New.pk = New.id
class New(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100)