• Day15 Web框架及Django框架


    day15 2018-03-31

    1. 上午重在理解

    1. 用户浏览器 --> socket 客户端
    4. 发送消息给服务端

    7. 收到回复消息

    断开

    2. 博客园的server --> socket 服务端
    1. 启动服务,
    2. 绑定IP和端口,等待连接
    3. 监听

    while 1:
    5. 服务端要接收消息
    6. 返回消息

    8。 断开


    PUT|xxx.avi|1024


    浏览器和web服务端 互相通信 要以来一个统一的规则(标准)
    本质上就是互发的消息要有一个格式的要求

    HTTP协议

    浏览器往服务端发的消息叫:请求(request)
    请求行 GET /index/ HTTP/1.1
    请求头 k1:v1

    请求体

    服务端回复给浏览器的消息叫:响应(response)
    响应行 HTTP/1.1 200 OK (规定格式)
    响应头 Content-Type: text/html; charset=utf-8
    k2:v2
    ...

    响应体 我们在浏览器上看到的内容


    总结上午讲解内容:
    a. 接收浏览器发送的消息
    b. 根据不同的路径返回不同的内容
    c. 通过字符串替换 实现 动态网页

    Web服务程序与Web应用程序之间的关系如下图:




    Python Web框架分类:
    1. 框架自带 a,b,c Tornado
    2. 框架自带b,c 使用第三方a Django
    3. 框架自带b,使用第三方的a和c Flask

    另外一个维度的分类:
    1. Django --> 大而全
    2. 其他

    Django:
    1. 安装
    pip install django==1.11.9
    2. 新建Django项目
    1. django-admin startproject 项目名

    3. Django 设置 settings.py文件中

    设置完Django项目,里面的.py文件的使用。


    1. 注释掉 csrf相关的那一行(大概是46行!)
    2. 配置html文件相关
    3. 配置静态文件相关 /static/
    Django里面的url.py指的是,url与函数对应的关系
    4. 基础必备的三件套
    1. HttpResponse --> 字符串
    2. render() --> HTML文件 --> 打开HTML文件并且完成字符串的替换 (包含 request  html文件名  转换字符串三个参数)
    3. redirect(“/book_list/”) --> 跳转


    5. HTML页面中form表单提交数据三个要点:
    1. input一定要放在form表单里面,并且 input 要有name属性
    2. form表单里面触发提交操作 一定要有submit按钮!!! <input type="submit" value="提交">
    3. 要指定form表单提交的URL(action属性) 并且指定提交的方法(method属性)。提交from表单需要用到post

    6,创建python里面的应用APP在现在的terminal s输入命令:python manage.py startapp app01(app名字)或者在窗口找到创建的Django目录下输入这个命令创建。

    Django中操作MySql数据库的准备工作:

      1,建个数据库

      2,告诉Django去哪里连数据库

      3,MYSQLdb、pymysql,告诉Django使用pymysql连接MySQL数据库

                     import pymysql

                     pymysql.install_as_MySQLdb()

          4,在app/models.py文件中,根据特定的语法  创建类

           5,执行两个命令

        


    {"email": "alex@1.com", "pwd": "alexdsb"}

    2. ORM 对象关系映射 SQLAlchemy

    连接数据库

    类 --> 数据表

    属性 --> 字段


    对象 --> 数据行


    让程序员不用自己写SQL语句,而是利用程序自动翻译的SQL语句

    $("#i1") document.getElementById("i1")



    特殊的语法 SQL语句


    ORM不能操作数据库,所以才要自己建数据库!!!

    Django中操作MySQL数据库的准备工作:
    1. 自己用SQL语句建个数据库 --> create database s20;
    2. 告诉Django去哪儿连数据库
    在settings.py文件中设置:
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql', # 告诉Django连接数据库的类型
    'NAME': 's20',
    'HOST': "127.0.0.1",
    'PORT': 3306, # 不要加引号
    'USER': "root",
    "PASSWORD": "123456", # 要加引号
    }
    }
    3. MySQLdb、pymysql,告诉Django使用pymysql连接MySQL数据库

    project/__init__.py文件中:
    import pymysql
    pymysql.install_as_MySQLdb()

    4. 在app/models.py文件中,根据特定的语法 创建类
    class Book(models.Model):
    # 定义一个自增的ID主键
    id = models.AutoField(primary_key=True)
    # 定义一个最大长度为32的varchar字段
    title = models.CharField(max_length=32)

    5. 执行两个命令
    1. python manage.py makemigrations --> 用小本本记录 app/models.py文件的任何改动
    2. python manage.py migrate --> 把上面的改动翻译成SQL语句,然后去数据库中执行




    1. 操作数据表




    2. 操作数据行
    1. 增
    Book.objects.create(title="书名")
    2. 删
    models.Book.objects.get(id=2).delete()
    3. 改
    obj = models.Book.objects.get(id=1)
    obj.title = "番茄物语 第二版"
    obj.save() --> 把改动同步到数据库中!!!
    4. 查
    查单个:
    obj = models.Book.objects.get(id=1)

    查所有:
    objs = models.Book.objects.all()


    书管理系统:
    1. /book_list/ 在页面展示所有的书



    ORM外键关联

    主机表 主机组表

    id name ip memo group id name

    3. 作业
    1. 把课上我们写的书管理系统,用Bootstrp写完
    2. 把外键关联的增删改查自己写一遍!







    3. 作业
    1. 主机表

  • 相关阅读:
    set<char*>s
    sscanf()函数。
    C语言函数sscanf()的用法 (转载
    zjut 1179 平均数
    C++数据间隔
    C++ 保留小数
    c++ 保留小数
    c语言 保留两位小数
    c++ 如何实现保留小数并 且 不进行四舍五入
    uva-657-搜索
  • 原文地址:https://www.cnblogs.com/python654/p/8858239.html
Copyright © 2020-2023  润新知