首页 > 代码库 > 2014-10-26 Django要点

2014-10-26 Django要点

一、{% block content %} {% endblock %}的作用

在模板继承中使用,子模板中的{% block content %}与{% endblock %}之间的内容会覆盖父模板中的

{% block content %}与{% endblock %}之间的内容。


二、forloop.counter0|divisablely:2

含义:循环从0开始计数(默认从1开始计数),过滤器含义为可被2整除。一般用在循环条件判断中。


三、admin自定义界面

wKiom1RNFGuw579XAAH-nvkKt5E939.jpg

如图。分别实现了搜索、展示、过滤、分类、排序功能。


四、过滤条件采用正则匹配式

例子:Books.objects.filter( title__iregex = r ‘(P|p|O)’)


五、模型类之间外键多对多与一对多关系的用法

wKiom1RNFwvC86uoAAJ61eHn7g4311.jpg

如上图:有以下几点总结:

  1. 多对多正向访问:已知Book对象时,可通过*.authors.values循环访问Author对象。

    books=Book.objects.all()

    for i in books:

        for j in i.authors.values:

            print j.first_name


2.多对多反向访问:已知Author对象时,可通过*.relate_name.all循环访问Book对象。

    authors=Author.objects.all()

    for i in authors:

        for j in i.relate_name.all:

            print j.title

(Notice:relate_name是在Book中的authors字段中定义的。

如:authors=models.ManyToManyField(Author,relate_name=‘Book_Author‘)


3.一对多的正向访问:已知Book对象时,可通过*.publisher.*直接访问Publisher对象。

    books=Book.objects.all()

        for i in books:

           print i.publisher.name


4.一对多反向访问:已知Publisher对象时,可通过*.relate_name.*直接访问Book对象。

    publishers=Publisher.objects.all()

        for i in publishers:

           print i.relate_name.title

(Notice:relate_name是在Book中的publisher字段中定义的。

如:publisher=models.ForeignKey(Publisher,relate_name=‘Book_Publisher‘)


六、Django debugtools调试工具

安装步骤:

  1. pip install django-debugtools

  2. 在setting.py中的INSTALLED_APPS中将‘debugtools’添加。

  3. 在模板页面可直接print后台传出的数据。


完。

本文出自 “蓝鳍豚” 博客,请务必保留此出处http://likunheng.blog.51cto.com/9527645/1568288

2014-10-26 Django要点