框架,即framework ['fremwɝk],特指为解决一个开放性问题而设计的具备必定约束性的支撑结构,使用框架能够帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来作表演。css
对于全部的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端。html
最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。python
若是要动态生成HTML,就须要把上述步骤本身来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,若是咱们本身来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。mysql
正确的作法是底层代码由专门的服务器软件实现,咱们用Python专一于生成HTML文档。由于咱们不但愿接触到TCP链接、HTTP原始请求和响应格式,因此,须要一个统一的接口,让咱们专心用Python编写Web业务。web
这个接口就是WSGI:Web Server Gateway Interface。sql
MVC模式:所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层;他们之间以一种插件式的、松耦合的方式链接在一块儿,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图以下所示:数据库
Django的MTV模式本质上和MVC是同样的,也是为了各组件间保持松耦合关系,只是定义上有些许不一样,Django的MTV分别是值:django
除了以上三层以外,Django还须要一个 url 分发器,它的做用是将一个个 url 的页面请求分发给不一样的 view 处理,view 再调用相应的 Model 和 Template,MTV的响应模式以下所示:后端
通常是用户经过浏览器向咱们的服务器发起一个请求(request),这个请求回去访问视图函数,(若是不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,而后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。浏览器
# 指定版本安装,不指定版本将安装最新版 pip install django==1.11.16
# 当前目录下建立Django项目 django-admin startproject mysite
# 在mysite目录下建立应用 python manage.py startapp 应用名
# 启动django项目,在项目的根目录下 python manage.py runserver IP:端口 python manage.py runserver 端口 python manage.py runserver
1.若是没有Templates(存放Html文件的配置)就建立一个 2.注释掉setting.py中'django.middleware.csrf.CsrfViewMiddleware'(当出现Forbidden(403)错误时,通常是这行没有被注释)
复习回来补充:(之后不用注释掉了)
csrf(跨站请求伪造),在页面的 form 表单里面写上 {% csrf_token %}
当提交POST数据的时候,Django的这个中间件会作检验,若是校验不经过则拒绝这次请求
3.在setting.py最后中加入如下内容,用来存放全部静态文件(css/js/图片)的路劲 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ]
4.在项目根目录下建立一个static目录,用来存放静态文件,固然也能够建立多个,好比static1,static2,但不必
1.ORM不能建立数据库,因此得本身事先建立好; 2.在setting.py中设置链接数据库的配置,把原来的注释或删掉; DATABASES = { 'default':{ 'ENGINE': 'django.db.backends.mysql', # 链接的数据库类型 'USER': 'root', # 用户名 'PASSWORD': '', # 密码 'HOST': '127.0.0.1', # 链接数据库的地址 'PORT': 3306, # 端口 'NAME': 'testdb' # 使用的数据库名称(要事先建立好) } } 3.告诉Django用pymysql代替默认的MySQLDB链接我们的MySQL数据库,在项目下的__init__.py文件中,加入下面两句: import pymysql pymysql.install_as_MySQLdb() 4.在建立的应用(好比appxx/blog)目录下的models.py文件中定义一个类,这个类必须继承models.Model,示例以下: class UserInfo(models.Model): id = models.AutoField(primary_key=True) # 建立一个自增的主键字段 name = models.CharField(null=False, max_length=20) # 建立一个varchar(20)类型的不能为空的字段 5.依次执行下面两条命令,便可在相应的数据库(好比上面写的testdb)下新建项目须要的表: python manage.py makemigrations # 生成同步数据库的脚本 python3 manage.py migrate # 同步数据库
在views.py文件里写一个登陆函数:
登陆失败返回的 login.html 页面会带有反馈信息给用户
在url.py文件里写映射关系:
将写好的 login.html 文件放置在 templates 目录下,将要用到的静态文件(CSS,JS,图片)放置在 static 目录:
通过了一番配置后,就能够启动Django项目了,在pycharm的右上角有个三角的绿色图标,点击便可让服务跑起来了,在浏览器输入相应的IP地址和端口便可访问页面了。
5.1 当在建立APP时,必定要记得在setting.py文件里添加下面图片箭头中的那一行,新建的APP叫什么名字就写对应的信息
5.2 ORM的对应关系,在models.py文件里写类,多少个类就对应多少张表
5.3 ORM单表的查询数据和增长数据
5.4 GET请求和POST请求
5.5 form表单日后端提交数据须要注意三点:
5.6 render() 与 redirect()
就拿上面登陆这个例子说吧
上图中的 user_list 也是 html 文件,可是用 redirect() 就写成 "/user_list/" ,而用 render() 就须要有 request,"add_user.html" 也不一样