Django Web开发指南笔记

Django Web开发指南笔记

语句VS表达式

  • python代码由表达式和语句组成,由解释器负责执行。
  • 主要区别:表达式是一个值,它的结果一定是一个python对象;如:12,1+2,int('123')
  • 结果不是对象的代码是语句,如:if、print、for

python中可变、不可变类型

  • 简单类型或者标量类型,包括整数等其他数字类型,str和unicode这样的字符串类型,以及元祖都是不可变。
  • 列表、字典、类都是可变的

  • python对象都有三个属性(类型、标识符、值)

  • 标识符:运行在解释器里所有对象都有的唯一的一个标识号

*args 和 **kwargs

  • 单*表示有元祖或list出现
  • 两个*表示有字典出现

re.match 和 re.search

  • match :只从字符串的开始与正则表达式匹配,匹配成功返回match对象,否则返回none;
  • search :将字符串的所有字串尝试与正则表达式匹配,如果所有的字串都没有匹配成功,返回none,否则返回match对象;(re.search相当于perl中的默认行为)
  • 然后再用match对象的group和groups方法获取匹配模式

import random vs from randow import choice

Package

http://www.crifan.com/pythonmodulevs_libraryvspackage/

python 的浅拷贝和深拷贝

http://www.tuicool.com/articles/nuQFbqe

python 动态实例属性

模板继承

`   {% extends "base.html" %}
    {% block content %}
    {% for post in posts %}
    <h2>{{ post.title }}</h2>
    <p>{{ post.timestamp }}</p>
    <p>{{ post.body }}</p>
    {% endfor %}
    {% endblock %}
`

Django模型层Meta内部类详解

http://blog.chinaunix.net/uid-21633169-id-4374219.html

模板过滤器

- 日期

`
    <p>{{ post.timestamp|date }}</p>

`

ORM关系映射

  • 多对一: ForeignKeyField

  • 多对多: ManyToManyField(会自动创建关系表)

  • 一对一: OneToOneField

模型继承

  • 抽象基础类

抽象类不会生成数据表

  • 多表继承

被继承的类(父类)就是一张数据表,其实就是在子类和父类之间设置了一个OneToOneField。 由于这种形式的继承允许父类拥有自己的属性,Meta的继承很可能导致两端的冲突(父类的Meta会被子类继承)。

什么是鸭子类型(duck typing)

  • 关心对象是什么类型,只关心行为!
  • 比如在python中,有很多file-like的东西,比如StringIO,GzipFile,socket。它们有很多相同的方法,我们把它们当作文件使用。

中间件

视图与逻辑

视图(也叫控制器),时所有DjangoWeb应用程序的核心。在定义和使用模型的时候,我们是数据库管理员;在编写模板的时候,我们时界面设计师;而在编写视图的时候,我们才是真正的软件工程师。

原文地址:https://www.cnblogs.com/tianboblog/p/6897319.html