zoukankan      html  css  js  c++  java
  • Django 框架基础

    Python web框架

    本质

    收发socket消息             --> 按照HTTP协议消息格式去解析消息
    
    路径和要执行的函数的对应关系   --> 主要的业务逻辑
    
    字符串替换               --> 模板(特殊符号 --> 数据)

    一个完整得请求流程:

    0. 启动服务端,等待客户端(用户的浏览器)来连接

    1. 在浏览器地址栏输入URL,与服务端建立连接,浏览器发送请求

    2. 服务端收到请求消息,解析请求消息,根据路径和函数的对应关系,找到将要执行的函数

    3. 执行函数,打开HTML文件,进行字符串替换,得到一个最终要返回的HTML内容

    4. 按照HTTP协议的消息格式要求,把HTML内容回复给用户浏览器(发送响应)

    5. 浏览器收到响应的消息之后,按照HTML的规则渲染页面

    6. 关闭连接

    socket服务端功能划分:

    a. 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn...
    
    b. 根据用户访问不同的路径执行不同的函数
    
    c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)

    Python中 Web框架的分类:

    按上面三个功能划分:
      1. 框架自带a,b,c         --> Tornado

      2. 框架自带b和c,使用第三方的a  --> Django

      3. 框架自带b,使用第三方的a和c   --> Flask

    按另一个维度来划分:

      1. Django   --> 大而全(你做一个网站能用到的它都有)

      2. 其他     --> Flask 轻量级

    Django框架

    Django框架模式

    MVC:

      模型(Model)

      视图(View)

      控制器(Controller)

    具有耦合性低、重用性高、生命周期成本低等优点。

     

    Django的MTV模式

    • Model(模型):    负责业务对象与数据库的对象(ORM)
    • Template(模版):    负责如何把页面展示给用户
    • View(视图):     负责业务逻辑,并在适当的时候调用Model和Template

    此外,Django还有一个 urls 分发器,它的作用是将一个个URL的页面请求分发给不同的view处理,view再调用相应的Model和Template

        图示

       

    新建Django项目

    Django安装

    pip3 install django==1.11.11	
    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ django==1.11.11	

    PyCharm安装的时候: 

    注意不要勾选那个选项 ,否则会默认安装最新版本,可以右下角选择版本

    Django项目的启动

    命令行创建项目 

    django-admin.py startproject 项目名

    pycharm 创建项目

     File --> New project --> 左侧选Django --> 右侧填项目路径,并且勾选python.exe 

    可选创建 自定义名字的一个APP 

    PyCharm启动

    点绿色的小三角,直接可以启动Django项目 (前提是小三角左边是你的Django项目名)

    命令行启动

    在项目的根目录下(也就是有manage.py的那个目录),运行:

    python3 manage.py runserver IP:端口    --> 在指定的IP和端口启动
    python3 manage.py runserver 端口     --> 在指定的端口启动
    python3 manage.py runserver       --> 默认在本机的8000端口启动

    Django 项目的重要组成文件

     项目/项目名/settings.py 文件

      存放项目配置的参数文件

    项目/项目名/urls.py 文件

     保存业务的逻辑与路径的对应关系 

    项目/static 文件夹

      存放静态文件的文件夹,如css,js,图片等

      静态文件夹为手动创建,因此需要在 setting.py 中添加此代码 

    # 静态文件保存目录的别名
    STATIC_URL = '/static/'
    
    # 所有静态文件(css/js/图片)都放在我下面你配置的文件夹中
    STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
    ]

      

    项目/templates文件夹

    保存页面展示文件存放目录

      

    项目/APP 文件夹

    分支项目下的应用,方便我们在一个大的Django项目中,管理实现不同的业务功能.

      project --> 项目

      APP --> 应用 

    创建APP的命令

    命令行,在Django项目的根目录输入:

    python3 manage.py startapp app名字	
    

    创建APP后需要在 setting.py 的 INSTALLED_APPS 中加入一行新的

    ’app名字.apps.App名字Config’
    


    项目/APP名/models.py 文件

    创建数据库使用便捷的ORM方式,保存的数据库表现在 models.py 中 

    项目/APP名/views.py 文件

    保存业务的主要逻辑实现功能代码

    ORM介绍及使用准备

    优势

    优点:  

      简单,不用自己写SQL语句

      开发效率高

    缺点:  

      记忆你ROM特殊的语法  

      相对于大神些的SQL语句,执行效率有差距

    ORM的对应关系

    类 ---> 数据表
    对象 ---> 数据行
    属性 ---> 字段

    ORM能做的事儿

    操作数据表 --> 创建表/删除表/修改表

    操作数据行 --> 数据的增删改查

    ORM做不到的事 

    不能创建数据库,自己动手创建数据库

    使用Django的ORM详细步骤

      1 . 自己动手创建数据库

     create database 数据库名;

      2 . 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)

    # 数据库相关的配置
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql', # 连接的数据库类型
    'HOST': '127.0.0.1', # 连接数据库的地址
    'PORT': 3306, # 端口
    'NAME': "day61", # 数据库名称
    'USER': 'root', # 用户
    'PASSWORD': '123456' # 密码
    }
    }
    

      3 . 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库        

        在项目/__init__.py文件中,写下面两句

    import pymysql
    # 告诉Django用pymysql来代替默认的MySQLdb
    pymysql.install_as_MySQLdb()

      4 . 在app下面的models.py文件中定义一个类,这个类必须继承models.Model

    class 类名(models.Model):
    ...  

      

    创建后命令的执行数据库的创建和修改都需要执行两个命令

    python3 manage.py makemigrations	# 创建执行命令
    python3 manage.py migrate	# 上传执行命令
    
  • 相关阅读:
    NFS4.1规范研究:session
    散列冲突与作为特征值的散列
    使用Select的3个注意事项
    3个学习Socket编程的简单例子:TCP Server/Client, Select
    Gdb调试多进程程序
    Usage of pmake
    诡异的bug: tcsh陷入死循环
    【转】PowerDesigner 物理数据模型(PDM) 说明
    大批量文件处理的7条建议
    OLE DB、ODBC 和 Oracle 连接池 (ADO.NET)
  • 原文地址:https://www.cnblogs.com/shijieli/p/10031620.html
Copyright © 2011-2022 走看看