一个完整的请求流程:
- 启动服务端,等待客户端(用户浏览器)来链接
- 在浏览器地址栏输入url,与服务端建立链接,浏览器发送请求
- 服务端收到请求消息,解析请求消息,根据路径和函数的对应关系,找到将要执行的函数
- 执行函数,打开html文件,进行字符串替换,得到了一个最终要执行的函数
- 按照http协议的消息格式要求,把html内容回复给用户浏览器(发送响应)
- 浏览器收到响应的消息之后,按照html的规则渲染页面
- 关闭链接
本次使用django版本是1.11 lts长期版本
安装
pip install django==1.11
创建项目
django-admin startproject mysite
项目的启动
python manage.py runserver ip:端口 --> 指定ip和端口启动 python manage.py runserver 端口 --> 指定端口启动 python manage.py runserver --> 默认在本机的8000端口执行
配置相关:
1.Templates(存放HTML文件的配置)
- 在项目下新建templates目录
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
2.静态文件(css/js/图片)
- 在项目下创建static目录
STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ]
3注释掉setting.py中带有csrf的那一行(大概45~47行)
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
创建app
- 方便我们在一个大的django项目中,管理实现不同的业务功能
python manage.py startapp myapp
- 创建玩app还要告诉django
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp.apps.MyappConfig' ]
ORM
- 不同的程序员写的sql水平参差不齐
- 执行效率也参差不齐
python语法 --自动翻译--> sql语句
类似于:
jquery DOM
$("#d1") --自动翻译--> document.getElementById("d1")
ORM的对应关系:
类 ---> 数据表 对象 ---> 数据行 属性 ---> 字段
优点
- 简单,不用自己写sql语句
- 开发效率高
缺点
- 记忆特殊语法
- 相对于老司机写的sql,执行效率有缺点
能做的事情:
- 操作数据表 ---> 创建表,删除表,修改表(操作models.py中的字段)
2, 操作数据行 ---> 数据的增删改查
不能做的事情: 不能创建数据库,(自己动手创建数据库)
django的ORM详细操作
Mac 推荐使用homebrew安装mysql
brew install mysql
启动停止和重启数据库服务
Brew services start mysql
Brew services stop mysql
Brew services restart mysql
1自己动手创建数据库
create database django111
2在django项目中设置连接数据库的相关配置(告诉django链接哪一个数据库)/settings
DATABASES = { 'default': { # 连接的数据库类型 'ENGINE': 'django.db.backends.mysql', # 数据库的地址 'HOST': '127.0.0.1', # 端口 'PORT': '3306', # 数据库名称 'NAME': 'django111', # 用户 'USER': 'root', # 密码 'PASSWORD': 'sunlizhao' } }
3告诉django用pymysql代替默认的mysqldb来链接mysql
- 在项目的__init__.py文件中,写入如下:
import pymysql pymysql.install_as_MySQLdb()
4,在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class UserInfo(models.Model): # 创建一个自增的主键字段 id = models.AutoField(primary_key=True) # 创建一个varchar(20)的不为空的字段 name = models.CharField(null=False, max_length=20)
5执行两个命令
#将改动记录下来 python manage.py makemigrations #去数据库中执行 python manage.py migrate