1、浏览器和服务端通信都要遵循一个HTTP协议(消息的格式要求)
2、web框架的本质:socket服务端 与 浏览器的通信
3、socket服务端功能划分:
a. 负责与浏览器收发消息(socket通信) --> 模块:wsgiref/uWsgi/gunicorn...
WSGI协议:用来a和bc通信
b. 根据用户访问不同的路径执行不同的函数
c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)
4. Python中 Web框架的分类:
按上面三个功能划分:
1. 框架自带上面分类的:a,b,c --> Tornado
2. 框架自带上面分类的b和c,使用第三方的a --> Django
3. 框架自带上面分类的b,使用第三方的a和c --> Flask
按另一个维度来划分:
1. Django --> 大而全(你做一个网站能用到的它都有)
2. 其他 --> Flask 轻量级
官方网站:https://docs.djangoproject.com/zh-hans/2.1/
版本选择:
5、首先Django安装(cmd命令行下)
pip install django==1.11.11
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==1.11.11
豆瓣:http://pypi.douban.com/simple/
清华:https://pypi.tuna.tsinghua.edu.cn/simple
6、其次Django_pycharm下安装7、添加环境变量
8、新建Django项目(Pycharm下以及命令行下)
#命令行创建(首先进入): django-admin startproject web01 (web01为项目名称)
进入项目目录: python3 manage.py startapp app (创建app目录,名字可以叫做app也可以起一个和业务相关的)
9、Django初始状态下目录结构介绍
10、Django的运行和框架流程
1、python manage.py runserver ip:8000
2、python manage.py runserver 8000
3、直接在pycharm启动:点绿色的小三角,直接可以启动Django项目(前提是小三角左边是你的Django项目名),默认8000端口
#可以点击--绿色小三角前面项目名称--选择(edit)--编辑配置端口
框架流程
11、setting.py初学
setting.py中 注释 # 'django.middleware.csrf.CsrfViewMiddleware',
初学注释,学到后面再打开
Django新建app
app -->应用 如:京东(家电业务/办公用品/男装/女装/儿童装)
#创建
在Django项目的根目录执行:python manage.py startapp app名字
#配置 setting.py文件
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'appweb.apps.AppwebConfig' #新建app需要配置此项,如果新建项目的时候就已经创建了app,Django会给自动加上
]
Django配置HTML目录
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')] #配置html目录
,
...
...
]
Django配置静态文件
#配置静态文件相关
STATIC_URL = '/static/' #别名
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'), #真正的目录
os.path.join(BASE_DIR, 'static2'),
]
#说明:
<link rel="stylesheet" href="/static/css/font-awesome.min.css">
#html页面通过别名static按照顺序(DIRS是列表有序)、查找下面配置的静态目录
#一般傻缺才配置多个,一个就够了,写的一摸一样就行
13、Django中必备的三种返回方法
from django.shortcuts import HttpResponse,render,redirect
HttpResponse 用来返回内容,直接返回数据
return HttpResponse('Hello Linyaohong')
render #返回一个html文件或进行字符串替换(和html配合使用)
return render(request, 'html/login.html')
return render(request, 'html/login.html',{"error": error_msg}) #{“key1”“:value1}
return render(request, 'html/user_list.html',{"user_list": ret})
redirect #跳转url
return redirect("/user_list") #本网站跳转url
return redirect("https:www.baidu.com") #跳转其他链接
request.method #请求方法
request.POST #获取POST请求的所有数据
14、Django中的ORM(用类对象数据库的表)连接数据库、创建表,删除表,修改,操作数据--增删改查
Django配置ORM
python语法 --自动翻译--> SQL语句
# 配置数据库相关ORM
#--------------------01-模块安装---------------
cmd: pip install pymysql 或者在 pycharm里安装
#--------------------02-setting.py------------------------
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '10.10.10.30',
'PORT': 3306,
'NAME': "myweb",
'USER': 'root',
'PASSWORD': '111111'
}
}
#--------------------03__init__.py------------------------
import pymysql
pymysql.install_as_MySQLdb()
ORM使用步骤
1、首先数据库需要自己先创建好:create database 数据库名;
2、在setting.py里配置数据库(上文已贴配置文件)
3、配置Django用pymysql代替默认的MySQLDB 连接MySQL数据库
项目目录/核心目录(和项目名称样)底下的 __init__ 导入pymysql
import pymysql
pymysql.install_as_MySQLdb()
4、在app下面的models.py文件中定义一个类,这个类必须继承models.Model
class Userinfo(models.Model):
id = models.AutoField(primary_key=True) #创建一个自增的主键
# unique 唯一的不为空的字段
name = models.CharField(null=False,max_length=20,unique=True) #创建一个varchar(可以保存可变长度的字符串)类型不能为空
5、进入项目根目录执行如下命令:
python manage.py makemigrations
python manage.py migrate #把改动翻译SQL语句,去数据库执行
如果要删除表:注释-执行两条命令即可
1. 查询
models.UserInfo.objects.all()
2. 增加
models.UserInfo.objects.create(name="张三")
对应关系