一、django模型
MTV模型:
Django的MTV模式本质是各组件之间为了保持松耦合关系,Django的MTV分别代表:
Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个url分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,
view再调用相应的Model和Template

二、django基本命令
1.创建一个django project
#django-admin.py startproject mysite

manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。

2.在mysite目录下创建应用,比如blog:
python manage.py startapp blog

3.启动django项目
#python manage.py runserver 8080

4.同步更改数据库表或字段
python manage.py makemigrations
python manage.py migrate

5.清空数据库
python manage.py flush

6.创建超级管理员
python manage.py createsuperuser
python manage.py changepassword username

7.Django 项目环境终端
python manage.py shell


三、路由配置urlconf
URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表;你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。
    '''
    
    urlpatterns = [
         url(正则表达式, views视图函数,参数,别名),
]


参数说明:

    一个正则表达式字符串
    一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
    可选的要传递给视图函数的默认参数(字典形式)
    一个可选的name参数

    '''
    
正则配置
from django.conf.urls import urlfrom . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/([0-9]{4})/$', views.year_archive),    #小括号表示分组,单座参数传递给视图函数
    url(r'^articles/([0-9]{4})/([0-9]{2})/$', views.month_archive),
    url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$', views.article_detail),
    
]

有名分组

在Python 正则表达式中,命名正则表达式组的语法是(?Ppattern),其中name 是组的名称,pattern 是要匹配的模式。
下面是以上URLconf 使用命名组的重写:
from django.conf.urls import urlfrom . import views

urlpatterns = [
    url(r'^articles/2003/$', views.special_case_2003),
    url(r'^articles/(?P[0-9]{4})/$', views.year_archive),
    url(r'^articles/(?P[0-9]{4})/(?P[0-9]{2})/$', views.month_archive),
    url(r'^articles/(?P[0-9]{4})/(?P[0-9]{2})/(?P[0-9]{2})/$', views.article_detail),
]


小括号里的month关键字传递给视图函数

urlconf怎么解析url:
URLconf 在请求的URL 上查找,将它当做一个普通的Python 字符串。不包括GET和POST参数以及域名。
例如,http://www.example.com/myapp/ 请求中,URLconf 将查找myapp/。
在http://www.example.com/myapp/?page=3 请求中,URLconf 仍将查找myapp/。
URLconf 不检查请求的方法。换句话讲,所有的请求方法 —— 同一个URL的POST、GET、HEAD等等 —— 都将路由到相同的函数。


四、视图函数

HttpResponse: 返回客户端响应内容
return  HttpResponse("ok")

render: 返回选然后的模板html文件
return render(request, 模板, 传递给模板的字典)

request: 请求对象

redirect: 页面跳转
return redirect('/index/')

五、模板

{{ 变量 }} 双大括号存储变量
{% for i in list %} {{  i }} {% endfor %}  #单大括号存放逻辑结构

.号相当于类,深度查找
i.name  查找属性

变量过滤器:
语法格式:      {{obj|filter:param}}

# 1  add          :   给变量加上相应的值
   #   # 2  addslashes   :    给变量中的引号前加上斜线
   #   # 3  capfirst     :    首字母大写
   #   # 4  cut          :   从字符串中移除指定的字符
   #   # 5  date         :   格式化日期字符串
   #   # 6  default      :   如果值是False,就替换成设置的默认值,否则就是用本来的值
   #   # 7  default_if_none:  如果值是None,就替换成设置的默认值,否则就使用本来的值
   
 #实例:#value1="aBcDe"
 {{ value1|upper }}
 #value2=5  {{ value2|add:3 }}
 #value3='he  llo wo r ld'  {{ value3|cut:' ' }}
 #import datetime  #value4=datetime.datetime.now(){{ value4|date:'Y-m-d' }}
 #value5=[]  {{ value5|default:'空的' }}
 #value6='跳转'  {{ value6 }} {% autoescape off %}   {{ value6 }} {% endautoescape %} {{ value6|safe }}
{{ value6|striptags }} #value7='1234' {{ value7|filesizeformat }}
{{ value7|first }}
{{ value7|length }}
{{ value7|slice:":-1" }}
#value8='  {{ value8|urlencode }}
    value9='hello I am yuan'