Python系统学习-18

##1.web框架的本质

  • socket位于应用层和传输层之间的虚拟层的接口
  • OSI
    应用层
    传输层
    网络层
    数据链路层
    物理层

###1.1HTTP请求格式
1.请求:浏览器向服务器发送的信息
消息格式:
请求方法,URL, 协议版本
k1:v1
k2:v2

  请求体

2.响应:服务器向浏览器响应的消息
消息格式:
协议版本,状态码,状态描述符
k1:v1
k2:v2
响应体(html)

###1.2web框架
功能:

1.socket收发消息 服务器程序 uwsgi Gunicorn
应用程序

  1. 根据不同的URL返回不同的页面(URL和函数对应关系)
  2. 动态的页面(字符的替换)
    https://www.cnblogs.com/maple-shaw/p/8862330.html

python web的分类

  • Django 自己实现2,3 使用第三方的 开发阶段: wsgiref模块 部署:uwsgi
  • flask     自己实现了2
  • tornado 自己实现了1,2,3

分类:

  1. Django
  2. 其他

###1.3Django的MTV模式

Model(模型):负责业务对象与数据库的对象(ORM)
Template(模版):负责如何把页面展示给用户
View(视图):负责业务逻辑,并在适当的时候调用Model和Template
此外,Django还有一个urls分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

在这里插入图片描述

##2.Django
###2.1创建项目
1. 命令行
django-admin startproject 项目名
2. pycharm

###2.2启动项目
1. 命令行
cd 项目目录下
python manage.py runserver # 127.0.0.1:8000
python manage.py runserver 80 # 127.0.0.1:80
python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80
2. pycharm

###2.3APP
创建APP
1. python manage.py startapp APP名字
注册APP
2. 在settings.py
INSTALLED_APPS = [
‘app01’,
‘app02.apps.App02Config’
]

###2.4路由系统(URL和函数的对应关系)
urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’index’,views.index)
]

	从上往下进行匹配
	第一个参数是正则

###2.5视图函数

	1. request  封装了请求所有的东西 
		request.path_info		——》URL路径
		request.method   		——》请求方式
		request.POST            ——》POST提交的数据  { }
		request.GET             ——》URL上的参数   /login/?username=alex&passwor=123
	
	2. 响应
		新手必备三件套
			1. HttpResponse('home')     		—— 返回一个字符串
			2. render(request,'index.html')     —— 返回一个具体的页面
			3. redirect(跳转的URL)				——重定向  响应头 location:'跳转的地址'

###2.6静态文件的配置

	STATIC_URL = '/static/'  # 别名   /static999/
	STATICFILES_DIRS= [
		os.path.join(BASE_DIR,'static')
	]

###2.7ORM
1. pymysql连接数据库

		1.import pymysql
		2. 创建一个连接
		3. 创建一个光标
		4. 执行SQL语句
		5. 得到sql的结果
		6. 关闭光标
		7. 关闭连接
		
	2. ORM 
		1. 优点
			不用写SQL 
		2. 缺点
			1. 只能完成一部分操作
			2. 效率低 
		3. 是什么?
			对应关系
				类		 表 
				对象		记录
				属性		字段
		4. ORM的功能:
			1. 操作数据表
			2. 操作数据行 
		5. 使用ORM
			1. 创建一个数据库
			2. 配置
				DATABASES = {
					'default': {
						'ENGINE': 'django.db.backends.mysql',
						'NAME': 's22day18',
						'USER': 'root',
						'PASSWORD': '',
						'HOST': '127.0.0.1',
						'PORT': 3306,
					}
				}
			3. 在项目同名的文件夹下的__init__.py中写代码:
				import pymysql
				pymysql.install_as_MySQLdb()
			4. 在app下的models.py中写类:
				class Publisher(models.Model):
					nid = models.AutoField(primary_key=True)
					name = models.CharField(max_length=16)
			5. 执行数据库迁移的命令
				python manage.py makemigrations    # 保存APP下的models.py的变更记录
				pyhton manage.py migrate		   # 将变更记录同步到数据库中




     3. ORM操作
		1. 查询 
			获取所有数据
				models.Publisher.objects.all()		—— 》 queryset  对象列表
			获取满足条件的所有数据数据
				models.Publisher.objects.filter(name='xxx')  —— 》 queryset  对象列表
			排序
				models.Publisher.objects.all().order_by('id')	 —— 》 queryset  对象列表  升序
				models.Publisher.objects.all().order_by('-id')   —— 》 queryset  对象列表  降序序
			获取一个对象
				models.Publisher.objects.get(nid=1)
					# 获取不到或者获取多个就报错
		2. 增加
			models.Publisher.objects.create(name='xxxxx')	—— 》成功插入的对象 
	
		3. 删除
			models.Publisher.objects.filter(nid=nid).delete()  ——》 删除满足条件的所有对象
			models.Publisher.objects.get(nid=nid).delete()	   ——》 删除对应的对象
		4. 修改
			pub_obj = models.Publisher.objects.get(nid=nid)
			pub_obj.name = 'xxxx'
			pub_obj.save()	# 写入数据库

###2.8模板语法
{{ 变量 }}
{{ pub_obj.name }}
{{ pub_obj.id }}

	{% for i in pub_list %}
		{{ forloop.counter }}	# 当前循环的次数
		<tr>{{ i }}</tr>
	
	{% endfor %}

猜你喜欢

转载自blog.csdn.net/weixin_41765871/article/details/82711045
今日推荐