• web应用程序、Django框架的学习


    web应用程序

    什么是web?

    Web应用程序是一种可以通过Web访问的应用程序,用户只需要有浏览器即可,不需要再安装其他软件
    案例:
        淘宝网、京东网、博客园、等都是基于web应用的程序

        应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式

                       

    Web应用程序的优点

    1. 你所需要的只是一个适用的浏览器
    2. 节省硬盘空间
    3. 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
    4. 过跨平台使用的例如Windows,Mac,Linux等等

    Web应用程序的缺点

    严重依赖服务端的正常运行、服务端一旦出问题、客户端里面受到影响

    什么是web框架:

    别人写好的框架(就是一堆目录和文件),我们只需要在固定的位置写代码即可

    手写web框架

    web应用程序是B/S架构的,所以、我们需要自己写一个服务端、然后让浏览器作为我们的客户端即可
    怎么样去写一个服务端? socket编程

    HTTP协议的特性:

    1. 四大特性:

           基于请求响应
           基于TCP协议之上的应用层协议
           无状态
           短链接

    2. 请求数据格式
           请求首行(请求方式、协议、版本号、路径)
           请求头
            \r\n
           请求体(get请求方式是没有请求体的、POST请求方式才有请求体)

    3. 响应数据格式
            响应首行()
            响应头
            \r\n
            响应体()
    4. 响应状态码
            1xx
            2xx
            3xx
            4xx
            5xx

     图解HTTP协议(漫画版本的)  图解TCP协议
    # 请求方式
    GET POST

    如何做到在网址栏中输入什么后缀就返回什么后缀?

    解决的思路:
        1. 服务端要知道你网址栏里输入的是什么后缀
        2. 服务端做判断,然后做对应的返回

    服务端如何知道客户端输的的是什么后缀

    当前的服务端存在的问题?

    1. socket部分需要我们自己每次都要写
    2. 我们需要自己每次处理HTTP格式的数据,自己转码、自己切分、自己取值等
    3. 没有解决高并发问题

    wsgiref模块的使用

    wsgiref服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器

    wsgiref模块是一个内置的模块,直接可以拿来使用,无需安装
    它帮助我们封装了socket部分,另外,它也解决了部分的高并发问题,但是,它能够解决的并发量并不高
    他们也会帮我们把HTTP格式的数据做封装处理,也就是说不需要我们在自己处理

    views.py        # 主要用来写业务逻辑的,它也称为是视图文件
    urls.py           # 主要用来写后缀和视图函数的对应关系,它也称为是路由文件
    template         # 存储项目中用到的模板文件,html文件,模板文本,提供了一些模板语法.

    每一个框架都应用有一个入口文件,Django也不例外

    Django框架的学习

    Python中得主流框架:

        Django框架:最主流的,市场占用率90%以上,笨重的框架,里面自带了很重的模块,不适用于小项目,类似于航空母舰
        falsk框架:轻量级的,小而美,自带的功能比较少,需要安装很多的第三方模块,当你安装的模块足够多的时候,也差不多跟Django差不多了
        tornado框架:异步非阻塞、高性能、学这个框架成本有点高、解决的并发量挺高的,它一般用在特殊的场景
        sanic框架:
        fastapi框架:它主要用来写一些接口,不出来页面,它只负责写业务逻辑

    如何使用Django:

    1. 需要先安装: 

            pip install django

    2. 版本的问题

    django1.x: 以前的老项目在使用,它跟2.x的版本区别不是特别大
    django2.x:主流的项目使用的都是2.x的版本,有一点区别的跟1.x
    django3.x: 新版本了,现在有不少的项目确实在选择3.x的版本
    比如:drf框架要求django的版本必须是2以上,不支持1的版本
    讲1.x和2.x的版本注意讲1.x,一块再去看2的版本

    3. django的版本要和你的Python的版本要匹配

    django3用个2.7版本,不行

    django2----->python3.6以上
    django1----->python3.6
     

    4. 如何创建django项目

        # 先切换路径到你想存储的位置
        命令行创建:
            django-admin startproject 项目名称
            django-admin startproject myfirst

     pycharm创建项目

            File
                New project
                    django
                        ...

    5. 注意事项:

        1. 项目名称必须是英文,不能是中文
        2. 一个pycharm窗口只打开一个django项目

    6. 如何启动项目

     先把路径切到跟manage.py同级目录下面

         命令行启动
            python3 manage.py runserver
            python3 manage.py runserver 8001
    '''Next, start your first app by running python manage.py startapp [app_label].'''

    7. 创建应用

         python manage.py startapp 应用名
         python manage.py startapp app01

    创建完应用之后,还要做一件非常重要的事情,就是注册应用, 如果没有注册,创建出来也没用

    1. INSTALLED_APPS = [
    2. 'django.contrib.admin',
    3. 'django.contrib.auth',
    4. 'django.contrib.contenttypes',
    5. 'django.contrib.sessions',
    6. 'django.contrib.messages',
    7. 'django.contrib.staticfiles',
    8. ]

    应用

    Django框架就类似于是一所大学,一所大学也要有二级学院
    应用就类似于是二级学院,一个Django框架至少要有一个应用

    taobao
        user
        order
        address

    应用名要做到见名知意,符合变量的命名规则即可,但是,教学使用app01 02 03...

    主要文件的介绍

    1. mysecond # 项目名称
    2. app01 # 应用名称
    3. migrations # 它是迁移数据的记录
    4. __init__.py
    5. admin.py # django自带的后台管理系统
    6. apps.py # 暂且忽略,写一些注册的东西
    7. models.py # 模型层,跟数据库打交道的,以后创建表就在这里写
    8. tests.py # 测试脚本
    9. views.py # 视图文件,主要用来写核心的业务逻辑的
    10. mysecond
    11. __init__.py
    12. settings.py # Django的全局配置文件
    13. urls.py # 路由文件,写地址的后缀和视图函数的对应关系
    14. wsgi.py # wsgiref服务器
    15. templates # 存储HTML文件的
    16. db.sqlite3 # Django自带的小型数据库
    17. manage.py # Django的启动文件,入口文件

  • 相关阅读:
    正点原子嵌入式linux驱动开发——U-boot使用
    sklearn快速入门教程:处理分类型数据
    nginx-vts监控模块
    输出最大选修学分问题
    面向对象思想
    优化算法|MOAVOA:一种新的多目标人工秃鹰优化算法(Matlab代码实现)
    Mac电脑idea中配置nodejs前端环境
    CentOS8 安装Cloc代码统计工具
    系统讲解java中list.stream()的用法
    设计模式学习(十一):组合模式
  • 原文地址:https://blog.csdn.net/m0_71292438/article/details/134290625