11_01、Django框架简介

一、Web

1、Web应用程序是什么

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

应用程序有两种模式C/S、B/S。

C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。

B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。

WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。

然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法运行的。换句话说,它是典型的浏览器/服务器架构的产物。

1.1 Web应用程序的优点

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

1.2 Web应用程序的缺点

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

1.3 B/S架构优点

浏览器/服务器架构(Browser/Server,简称B/S)能够很好地应用在广域网上,成为越来越多的企业的选择。浏览器/服务器架构相对于其他几种应用程序体系结构,有如下3方面的优点:

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

总结一下,本质上:浏览器是一个socket客户端,服务器是一个socket服务端

2、 web框架

Web框架(Web framework)是一种开发框架,用来支持动态网站、网络应用和网络服务的开发。

这大多数的web框架提供了一套开发和部署网站的方式,也为web行为提供了一套通用的方法。web框架已经实现了很多功能,开发人员使用框架提供的方法并且完成自己的业务逻辑,就能快速开发web应用了。浏览器和服务器的是基于HTTP协议进行通信的。也可以说web框架就是在以上十几行代码基础张扩展出来的,有很多简单方便使用的方法,大大提高了开发的效率。


    python中的三大主流框架:
        1. Django:# 大而全,类似于航空母舰
        2. flask:# 小而精,严重依赖于第三方模块,轻量级的
        3. tornado:# 异步高性能框架,擅长解决高并发问题
    '''我们现在学习Django,框架没必须全部都学,只需要学习一到二个,到企业中,随着公司的使用去学习。'''

二、Django简介

1、MVC与MTV模型

1.1 MVC

Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:

image-20200924175052910

1.2 MTV

Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:

  • M 代表模型(Model): 负责业务对象和数据库的关系映射(ORM)。
  • T 代表模板 (Template):负责如何把页面展示给用户(html)。
  • V 代表视图(View): 负责业务逻辑,并在适当时候调用Model和Template。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:

image-20200924175204537

一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。

2、Django的下载与基本命令

2.1 下载Django

  方式一:在命令行输入:pip3 install django

    pip install django==1.11.9 -i http://pypi.hustunique.org/simple 指定版本号,指定国内镜像

  方式二:用pycharm安装

  方式三:用pycharm的Terminal的命令行安装

2.2 创建一个django 项目

方式一:命令行创建项目

django-admin startproject 项目名称

当前目录下会生成mysite的工程,目录结构如下:

image-20200924175250501

  • manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
  • settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
  • urls.py ----- 负责把URL模式映射到应用程序。

方式二:pycharm创建项目

注意:命令行创建项目和pycharm创建项目的区别:

区别1:

pycharm创建会自定生成一个templates文件夹

cmd创建没有templates文件夹

区别2:

复制代码
# pycharm创建项目
# settings文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'], # 此处有bug,应该为:'DIRS': [os.path.join(BASE_DIR,'templates')], 修改后可以找到上面那个空的templates文件夹

'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
 
复制代码
复制代码
# cmd创建项目
# settings文件

TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], # 空路径
'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
复制代码

2.3 启动django项目

方式一:cmd启动Django项目

'''前提:在cmd中,先切换到manage.py文件所在的路径下'''
1. 命令行启动
    python3 manage.py runserver
    python3 manage.py runserver 127.0.0.1:8000 # 在本地启动的时候默认
    python3 manage.py runserver 8001  # 修改端口号
    '''django框架的默认端口号:8000'''

方式二:pycharm启动Django项目

点击pycharm的右上角绿色启动按钮即可

 

这样我们的django就启动起来了!当我们访问:http://127.0.0.1:8000/时就可以看到:

image-20200924175446249

2.4 创建应用

方式一:cmd命令行创建应用

python3 manage.py startapp 应用名  # 应用名符合正常的命名规范就行, 见名知意

方式二:pycharm创建应用

我们可以在创建项目的时候,提前建好应用

也可以在pycharm中直接输入以下指令添加应用

startapp app01

注册应用

注意:手动创建应用,需要在配置文件中注册应用,否则无法打开

复制代码
INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            'app01',  # 添加应用名app01
            'app02',  # 添加应用名app02
        ]
复制代码

通过pycharm创建,并且在Application name处添加应用名,则pycharm会自动注册,无需另行配置

3、主要文件介绍

复制代码
mysite1     # 项目名称
    app01     # 应用名称
        migrations     # 迁移数据库的时候,会把迁移记录存在这个文件夹里面
            __init__.py     #
        admin.py     # django自带的后台管理系统
        apps.py     # 暂且忽略
        models.py     # M:model层,跟数据库打交道的
        tests.py     # 测试脚本文件
        views.py     # V:view(逻辑层)
    mysite1
        __init__.py
        settings.py   # 整个django项目的配置文件
        urls.py   # 路由文件,记录后缀与视图函数的对应关系
        wsgi.py   # wsgiref服务器,在本地项目使用wsgiref, 后续上线的时候,我们会换成 uwsgi服务器,uwsgi承载的并发量更高,而wsgiref承载的并发量小,WSGI协议
    templates   # 写html页面的地方
    db.sqlite3   # django框架自带的小型数据库,mysql
    manage.py   # 整个django项目的入口文件
复制代码

4、Django三板斧

1. HttpResponse()
2. render()
3. redirect

 # return HttpResponse('index')  # 暂且记住返回值是字符串
 # return render(request, 'index.html')  # 渲染html页面的
 # return redirect('http://www.mzitu.com')  # 重定向的
 return redirect('/home/')  # 重定向的

 

posted @   三三得九86  阅读(970)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示