标签:tps 接收 pip mysql数据库 int 介绍 关联 sim 不同的
1,前言
socket 位于应用层和传输层之间的一个抽象层,它是一个接口。 百度的服务器(socket服务端) 1. 启动socket 2. 绑定ip和端口 3. 监听 6. 接收数据 7. 发送数据 9. 断开连接 浏览器(socket客户端) 4. 连接 5. 发送数据 8. 接收数据 9. 断开连接 http协议: 1 // 请求方式:8种 GET POST DELTE PUT OPTIONS HEAD 2 // 状态码: 3 // url 协议 ip 端口 路径 查询 ?k1=v1&k2=v2 请求(request--浏览器给服务端发的消息) get方式没有请求数据(请求体) ‘请求方式 url 协议版本 k1: v1 k2: v2 ‘ 响应(response--服务端给浏览器发送的消息) ‘协议版本 状态码 状态描述 k1: v1 k2: v2 HTML文本‘ 响应数据(响应体)--> html文本
--* 浏览器发送请求接收响应的流程 *--
地址栏上输入URL,回车,发送GET请求
服务器接收请求,获取到路径,根据不同路径返回不同内容
服务器把响应的内容组成符合HTTP协议响应格式的字符串返回给浏览器
浏览器接收到响应,拿到响应体(HTML代码),进行渲染
2,web 框架本质 -- socket服务端
功能: 1. socket收发消息 2. 根据不同的路径返回不同内容 3. 动态页面 - 字符串的替换 模板的渲染 web框架的分类: flask 2 django 2 3 wsgiref uwsgi 模块接收请求 根据地址在urls.py匹配地址,找到对应函数执行,返回响应 tornado 1 2 3
3,django
-- cmd -- 1 // pip install django==1.11.18 -i https://pypi.douban.com/simple/ # 下载 2 // django-admin startproject 项目名 # 创建项目 根目录右键+shift 打开命令行
3 // 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 改IP
4 // 配置
TEMPLATES 模板配置
‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)]
DATABASES 数据库
STATIC_URL = ‘/static/‘ # 别名
5 // 简单使用
from django.shortcuts import HttpResponse,render
def index(request):
# return HttpResponse(‘这是index页面‘)
return render(request, ‘index.html‘)
urlpatterns = [
url(r‘^admin/‘, admin.site.urls),
url(r‘^index/‘,index)
]
-- pycharm 下 --
settings ->project ->project interpreter ->双击django->左侧点Manage Repositories进入后点击右侧加号->添加进去http链接 specify version 选择版本 #下载
file ——》 new project ——》 项目名 ——》 选择解释器 ——》 create #创建项目
点击绿三角(切记勿用右键启动文件) #运行
4,form 表单
form标签有 action="" method="post" input标签要有name属性 需要有一个type=submit的input标签 或者 button 按钮 目前可以提交post请求: 在settings.py中注释MIDDLEWARE中的 django.middleware.csrf.CsrfViewMiddleware
request.method # 请求方式 POST GET request.POST # form表单提交POST请求的数据 类似字典 return redirect(‘https://www.baidu.com/‘) return redirect(‘/index/‘) # 响应头 Location: /index/
-- APP --
命令行 : python manage.py startapp app名称
tools ——》 run manage.py task ——》 startapp app名称
settings.py 里 # 注册APP ‘app01.apps.App01Config‘ # 推荐写法
5,
django项目使用mysql数据库的流程: 1 创建数据库 cmd 下进去mysql 2 配置 settings 引擎/名称/host/port/user/password 3 在和settings.py同级目录下的init.py里
import pymysql pymysql.install_as_MySQLdb()
4 创建表 (在app下的models.py中写类)
from django.db import models class User(models.Model): username = models.CharField(max_length=20) password = models.CharField(max_length=20)
注意 : django提供的 ManyToManyField
数据库迁移:
python manage.py makemigrations #保存models的变更记录
python manage.py migrate #
from django.db import models # 出版社 class Publisher(models.Model): pid = models.AutoField(primary_key=True) # 主键 name = models.CharField(max_length=32, unique=True) # varchar(32) def __str__(self): return self.name # 书籍 class Book(models.Model): name = models.CharField(max_length=32, unique=True) # varchar(32) pub = models.ForeignKey(‘Publisher‘, on_delete=models.CASCADE) def __str__(self): return self.name # 作者 class Author(models.Model): name = models.CharField(max_length=32, unique=True) books = models.ManyToManyField(‘Book‘,through=‘Author_book‘) #django创建的 多对多关系表 def __str__(self): return self.name class Author_book(models.Model): author = models.ForeignKey(‘Author‘, on_delete=models.CASCADE) # 外键 关联哪张表 book = models.ForeignKey(‘Book‘, on_delete=models.CASCADE) # 外键 关联哪张表 date = models.DateTimeField() # python datetime 一个作者一本书 什么时候出的
发请求方式-- 输地址 form(默认get) a标签
函数返回值--
HttpResponse(‘字符串‘)
render(request,‘xx.html‘,{‘键‘:值}) -->完整页面渲染
redirect(‘要跳转的地址‘) --重定向 redirect(‘/index/‘)ORM -- 专注业务逻辑,提高开发效率
类-表
对象-行
属性-字段
models.类.objects.all() -- 获取全部
表.objects.create(name=‘xxx‘,其他) #增
Book.objects.get(pk=1).delete() #删除
Book.objects.filter(pk=1).delete() #删
对象.字段 = 新值 对象.save() #保存到数据库
author_obj.books.set(books_id) #多对多 设置关系
正向查询 (manytomany表) 作者->书 作者.books. models.表名.objects.筛选条件
反向查询
对象.表名小写_set -- 多对多的管理对象
对象.表名小写_set.all() --所有的对象
---------------------------
类中的方法与独立函数不完全相同,因此不能直接将函数装饰器应用于类中的方法 ,我们需要先将其转换为方法装饰器
Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器
from django.views import View from django.utils.decorators import method_decorator class AddClass(View): @method_decorator(wrapper) def get(self, request): return render(request, "add_class.html") def post(self, request): class_name = request.POST.get("class_name") models.Classes.objects.create(name=class_name) return redirect("/class_list/")
标签:tps 接收 pip mysql数据库 int 介绍 关联 sim 不同的
原文地址:https://www.cnblogs.com/zhangchen-sx/p/10424394.html