zoukankan      html  css  js  c++  java
  • day-18 Django

    1. WEB框架的本质

    socket 套接字 网络通信
    位于应用层和传输层之间的虚拟层,接口
    OSI
    应用层 HTTP
    传输层 TCP UDP
    网络层 IP
    数据链路层
    物理层



    1. HTTP协议
    1. 请求(request) 浏览器向服务器发送的消息
    消息格式:
    '请求方法 URL 协议版本
    k1: v1
    k2: v2

    请求体'

    2. 响应(response) 服务器向浏览器响应的消息

    消息格式:
    协议版本 状态码 状态描述符
    k1: v1
    k2: v2

    响应体(HTML页面)

    2. web框架
    功能:
    1. socket收发消息 服务器程序 uwsgi Gunicorn

    应用程序


    2. 根据不同的URL返回不同的页面(URL和函数对应关系)
    3. 动态的页面(字符的替换)


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

    分类:
    1. Django
    2. 其他


    2. Django

    3. 下载Django
    1. 命令行
    pip3 install django==1.11.15

    2. pycharm安装

    4. 创建项目
    1. 命令行
    django-admin startproject 项目名

    2. pycharm


    5. 启动项目
    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


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

    7. 路由系统(URL和函数的对应关系)

    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'index',views.index)
    ]

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

    8. 视图函数

    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:'跳转的地址'

    9. 静态文件的配置

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

    10. ORM
    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() # 写入数据库

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

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

    {% endfor %}

  • 相关阅读:
    Qt 6 正式发布
    GTK 4.0 正式发布
    编译 flink 1.12.0
    Flink 1.12.0 sql 任务指定 job name
    【翻译】Apache Flink 1.12.0 Release Announcement
    【源码】Flink 三层图结构 —— JobGraph 生成过程
    【源码】Flink 算子 chain 在一起的条件
    Web开发基础之CMDB系统开发之三
    Web开发基础之CMDB系统开发之二
    Ubuntu18.04升级至20.04
  • 原文地址:https://www.cnblogs.com/junyingwang/p/9778186.html
Copyright © 2011-2022 走看看