web框架与Django

news/2024/7/23 9:19:48 标签: 前端

web应用程序

什么是web

        Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件

应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。

        web框架就是别人写好的框架,我们只需要在固定的位置填写代码即可

web程序的优点与缺点

优点:

  • 网络应用程序不需要任何复杂的“展开”过程,需要的只是一个适用的浏览器;
  • 网络应用程序通常耗费很少的用户硬盘空间,或者一点都不耗费;
  • 它们不需要更新,因为所有新的特性都在服务器上执行,从而自动传达到用户端;
  • 网络应用程序和服务器端的网络产品都很容易结合,如email功能和搜索功能;
  • 因为它们在网络浏览器窗口中运行,所以大多数情况下它们是通过跨平台使用的 (例如Windows,Mac,Linux等等)

缺点:

  • 网络应用程序强调浏览器的适用性。如果浏览器方没有提供特定的功能,或者弃用特定的平台或操作系统版本(导致不适用),就会影响大量用户;
  • 网络应用依靠互联网远程服务器端的应用文件。因此,当连接出问题时,应用将不能正常使用。
  • 许多网络应用程序不是开源的,只能依赖第三方提供的服务,因此不能针对用户定制化、个性化,而且大多数情况下用户不能离线使用,因而损失了很多灵活性;
  • 它们完全依赖应用服务商的可及性。如果公司倒闭,服务器停止使用,用户也无法追索以前的资料。对比而看,即使软件制造商倒闭了,传统的安装软件也可以继续运行,尽管不能再更新或有其他用户服务;
  • 相似地,提供方公司对软件和其功能有了更大的控制权。只要他们愿意就能为软件添加新特性,即使用户想等bugs先被解决再更新。跳过较差的软件版本也不可能了。公司可以强加不受欢迎的特性给用户,也可以随意减少带宽来削减开支。
  • 公司理论上可以检索任何的用户行为。这有可能引起隐私安全问题。

B\S架构的优点
  • 这种架构采用Internet上标准的通信协议(通常是TCP/IP协议)作为客户机同服务器通信的协议。这样可以使位于Internet任意位置的人都能够正常访问服务器。对于服务器来说,通过相应的Web服务和数据库服务可以对数据进行处理。对外采用标准的通信协议,以便共享数据。
  • 在服务器上对数据进行处理,就处理的结果生成网页,以方便客户端直接下载。
  • 在客户机上对数据的处理被进一步简化,将浏览器作为客户端的应用程序,以实现对数据的显示。不再需要为客户端单独编写和安装其他类型的应用程序。这样,在客户端只需要安装一套内置浏览器的操作系统,直接安装一套浏览器,就可以实现服务器上数据的访问。而浏览器是计算机的标准设备
    • 浏览器就是socket客户端,服务端就是socket服务端

基于socket编写web应用

在编写之前,首先了解http的四大特性:

HTTP协议的特性:
1. 四大特性
     基于请求响应
    基于TCP协议之上的应用层协议
    无状态
    短链接
    
2. 请求数据格式
    请求首行(请求方式、协议、版本号、路径)
    请求头
    \r\n
    请求体(get请求方式是没有请求体的、POST请求方式才有请求体)
3. 响应数据格式
    响应首行()
    响应头
    \r\n
    响应体()
4. 响应状态码
    1xx
    2xx
    3xx
    4xx
    5xx

请求方式
GET POST

wsgiref模块的使用        

它是一个内置模块,可以直接拿来使用,无需安装,它帮助我们把socket进行封装,也解决了部分的高并发问题,但是只是解决了一部分,它还可以帮助我们把http格式的数据也进行封装处理,不需要我们来处理。

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

启动文件;

from wsgiref.simple_server import make_server
from urlss import urls


def run(env, response):
    response('200 ok', [])# env:请求数据的时候,携带的数据都在这里面
    print(env)                   # response:服务端给客户端响应的数据
    current_path = env.get('PATH_INFO')

    func = None
    for url in urls:   # url是里面的元组
        if current_path == url[0]:
            func = url[1]
            break

    if func:
        res = func()
        return [res.encode('utf-8')]
    else:
        return b'404 error'

if __name__ == '__main__':
    server = make_server('127.0.0.1', 8000, app=run)
    """
    他可以实时监听'127.0.0.1',8000,这个地址,只要客户端进行连接,就会响应
    app=run 的意思是当客户端有请求时,会把这个请求交给run函数处理,不需要加括号
    Django中写的是函数名,当接受请求时会调用这个函数,函数+括号
    如果是flask框架的话,接受到请求后,也会交给对象来处理,只不过对象+()变成了__call__的执行
    
    """
    server.serve_forever()    # 启动框架

urls文件

from vlwes import *
urls = (
    ('/index', index),
    ('/home', home),
)

vlwes文件

def index():
    return 'from index'


def home():
    return 'from home'

以后我们添加功能时,可以直接在vlwes中编写功能,再由urls文件返回信息,使用wsgiref文件启动即可,我们也可以读取文本里的内容或者网页里的内容。

甚至可以通过我们自己的网址来访问别的网站

当我们使用多个HTML时,会出现很多文件挤在一个文件夹中,这我们可以新建文件夹,把他们放进去

Django框架

python的主流框架

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

如何使用Django

     Django的下载:可以在pycharm中下载:

注意:

django的版本要和你的Python的版本要匹配,django3用个2.7版本,不行
django2----->python3.6以上
django1----->python3.6

项目名称必须是英文,不能是中文

一个pycharm窗口,只能打开一个Django项目

启动项目:

如何启动项目
    

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


     命令行启动
        python3 manage.py runserver
        python3 manage.py runserver 8000

使用命令行创建Django:

 django-admin startproject 项目名称
        django-admin startproject myfirst


    pycharm创建项目
        File
            New project
                django

创建完之后会有这几个文件

应用

我们通俗点来说,Django就是一所大学,而应用就是大学里的二级学院,一个Django项目,至少得有一个应用

创建应用:

python.manage.py startapp 应用名(英文)

创建完毕之后,还要进行注册进行

在settings.py文件里进行注册

应用的起名遵循变量的命名规范

注册:

启用Django2版本的页面

主要文件介绍

mysecond            # 项目名称
    app01             # 应用名称


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


http://www.niftyadmin.cn/n/5164054.html

相关文章

【数据结构】排序详解二

文章目录 计数排序快速排序归并排序 计数排序 计数排序的基本思想是把每个数出现的次数记录在另外一个数组中,然后我们知道数组下标是有大小的,这样根据数组下标的从小到大去让我们的原数组有序 我们既然要创建一个数组,那么就表明原数组的值…

安防监控EasyCVR视频汇聚平台无法接入Ehome5.0是什么原因?该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、云存储、回放…

电机调速程序

/******************************************************************** * 名称 : 电机调速 * 功能 : 通过P1.0口来控制直流电机的旋转的快慢 /***********************************************************************/ #include <reg52.h> #define uchar unsigned …

Qt实现自定义多选下拉列表

目录 前言1、 功能描述2、代码实现总结 前言 本文记录了一种通过继承 QComboBox 实现下拉列表多选功能的方法。效果如下图所示&#xff1a; 1、 功能描述 普通的下拉列表只支持选择一个选项&#xff0c;在软件开发过程中&#xff0c;经常会遇到下拉列表支持选择多个选项的需…

《行业全景画像报告》第3期

本月《行业全景画像报告》第3期: 环保、房地产和非银企账的胡挤度仍然报高&#xff0c;实际投蛋交易应注意:煤是行业动量较强&#xff0c;房地产行业动量疑弱&#xff0c;业绩整体表现较差:房地产、国防军工景气成较高&#xff0c;财务基本面状况较好&#xff0c;而食品饮料、煤…

复盘一个诡异的Bug

该Bug的诡异之处在于这是一个由多种因素综合碰撞之后形成的综合体。纵观整个排查过程&#xff0c;一度被错误的目标误导&#xff0c;花费大量功夫后才找到问题点所在&#xff0c;成熟的组件在没有确凿证据之前不能随意怀疑其稳定性。 前言 此前在接入两台粒径谱仪&#xff08;…

新一代前端工具链Rome:革新前端开发

在前端开发领域&#xff0c;每时每刻都在涌现着各种新的工具和框架。而 Rome&#xff0c;作为一款新一代前端工具链&#xff0c;引起了广泛的关注和热议。它不仅提供了卓越的性能&#xff0c;还整合了各种强大的功能&#xff0c;使前端开发变得更加高效。本文将深入介绍 Rome&a…

【LeetCode力扣】42.接雨水(困难)

目录 1、题目介绍 2、解题 2.1、解题思路 2.2、图解说明 2.3、解题代码 1、题目介绍 原题链接&#xff1a;42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,…