web开发——2.Django快速入门

python web开发——Django快速入门

1-1 课程内容

l 复习回顾

l Django框架的优势

n MVC处理模式

n MVT处理模式

l Django项目快速入门——Hello World

n Django项目的搭建

n Django项目结构以及第一个视图的开发

n Django项目子应用模块以及应用模块第一个视图的开发

l Django文件结构、项目结构

l 项目小案例开发

l Django的整体结构[学习技能点]

1-2 本章内容

1. 复习回顾

a. 什么是web?什么是web软件?什么是web开发?

web指代的是网络的意思

web软件指代的就是网络软件的意思,更多的指代的是网站

web开发指代的就是通过编程的方式,实现包含各种数据处理功能的网站的过程!

b. 什么是网络通信协议?HTTPHTTPS分别是什么协议?有什么区别?

网络通信协议:是一种数据在网络传输过程中的约定,是数据传输双方约定的数据传输的排列和格式

HTTP是一种超文本传输协议,通过传输HTML数据来实现HTML超文本标记语言处理的数据,更多的应用使用在网站中

HTTPS是一种通过SSL数字证书提供了数据通信安全通道的HTTP协议,是一种安全的HTTP协议,通过数据非对称加密的方式实现了安全通道的处理。

相对来说,HTTPSHTTP传输的数据更加的有安全性和保障性!

c. wsgi是什么?web接口是什么?

wsgiweb server gateway interface-web服务网关接口,也是一种通信协议

web接口:web应用程序中和外界进行数据交互的通道,通常情况下,web应用程序通过web接口向外界输出数据;外界通过接口绑定的url地址来调用接口获取数据

d. python中怎么实现web接口,通过什么方式处理?

python通过内置的实现了wsgi的服务器,来创建服务器并将一个普通函数绑定为web接口函数,通过这个函数实现了web应用程序和外界的数据交互

内置的wsgi服务器,是通过wsgiref.simple_server.make_server()来进行创建并绑定接口函数的!通过serve_forever()函数启动服务器并提供监听端口提供服务的!

e. python 进行web开发的优势?[扩展]

web软件开发,当之无愧的王者是java,快速开发经常使用Php;但是这是因为python还没有出现;随着硬件发展已经达到一定的高度,编程语言的处理效率相对于硬件处理效率来说,时间的差异已经非常小!在这样的现状下,不同的编程语言在web开发领域比拼的就是开发效率,在开发效率来说~一个完整的web软件,以使用java开发的周期为标准[java开发使用了1年、php开发使用8个月、使用python开发3个月]

python进行web开发的效率是相当高的,但是对于web软件来说,开发效率只是整个软件成本的一部分

考虑到整个软件结构的完整性和健壮性,以及功能扩展性、可维护性,java开发是首选语言。

只是考虑软件的完整性和健壮性,php是首选语言

考虑的更多的是成本和维护性,python是首选语言!

发展现状:更多的公司已经不需要考虑编程语言本身的处理速率,同时现在很多软件的扩展性并不是非常的必要,更多的考虑软件开发的速度和出现问题之后的维护成本,所以在现有状态下,python web开始流行!

PS:补充~python是因为什么而流行的!

人工智能~概念->落地 转变过程!大型IT公司已经开发研发人工智能相关领域技术

python可以和其他语言进行无缝的交互,在人工智能方向的开发成本是最低的!

普通公司~概念->储备人工智能开发人才[python~(运维、爬虫、web[科学计算..])]

2. Django概述

python在进行web开发过程中,如果直接使用底层操作~开发难度较大的同时,开发过程非常繁琐!

在实际使用时,python通常通过框架(framework)来完成高效率的开发

python中模块和框架有什么区别?

模块~pygame\hashlib\..:模块指代的是大量函数的一个集合

框架~Django\Torando\Flask\..:框架指代的各种模块的集合以及封装了大量的流程处理

实际操作时,python使用的web框架有很多,比较流行的

Django

Flask

Tornado

Web.py

等等more..

l Django框架的优势

Django是一个python web框架,主要用于进行高效率的web软件开发而衍生出来一个python组件

Django前世今世……新闻出版集团~内部内容非常多,需要有组织的管理,最直接的手段就是通过软件进行管理——决定了自己通过python开发一套适用于自己公司的内容管理系统!~ Django ~

08年Django开源发布[免费(free)、开源(opensource)],但是无人理会!

java web | php web占据了主要市场!

12/13:前端开发开始逐步火爆

12/13年移动端开始流行[各种android/ios手机、平板等等]

android工程师、ios工程师非常的受欢迎!

技术陷阱:同样一套程序~如果支持所有终端[前端/android/ios]

降低成本:找出一个技术,可以同时适应多个终端——HTML5

14~16:前端开发工程师,出现了飙升局面

维持了一年半的时间,趋于稳定——健康的发展态势

16年:alphaGO 围棋大战——奠定了人工智能落地的基石!

人工智能:模仿人的学习能力,并不是代表具有智能智慧!

人工智能——人和机器的结合!

人工智能——开发——语言——各种语言!

python成为了人工智能首选语言

16年——python开始造势的一年

各个公司开始研发python相关技术

运维、爬虫、web、科学计算……目的:人工智能

17~python web :DjangoTornadoFlask..

Django是使用python进行web开发的一个高效开发框架,具有以下优势:

非常高效的web应用搭建

非常高效的web功能处理

完善的ORM操作[程序中的数据和数据库中的数据的对应(增删改查)关系]

非常强大的表单处理

非常强大的网页模板视图[网页、模板语法(视图)]

非常强大的路由功能[url地址和处理函数之间的映射(对应)关系]

硬件性能突破缓存处理

more..

3. Django的使用

l 首先,安装Django

# 安装django的方式,和安装普通模块的方式相同

pip install django

pippython install package

l 检测安装是否成功

django-admin --version

>>> import django

>>> print(django.get_version())

l 使用django创建web项目

django-admin startproject <name>

django-admin startproject mysite

创建好的项目文件结构

|-- mysite/             # 项目文件夹[根目录]

|-- mysite/              # 根项目(主项目)

     |-- __init__.py          # 模块文件

     |-- urls.py               # 路由文件[url地址和处理函数进行对应]

     |-- settings.py          # 项目的设置配置文件

     |-- wsgi.py               # 实现了wsgi网关协议的模块

|-- manage.py           # 项目的命令管理模块[不需要修改,直接使用]

启动并访问项目

# 在项目根目录下运行如下命令

python manage.py runserver

如果出现如下提示信息,表示项目(使用内置服务器)正常启动

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations f

or app(s): admin, auth, contenttypes, sessions.

Run 'python manage.py migrate' to apply them.

November 28, 2017 - 10:59:25

Django version 1.11.7, using settings 'mysite.settings'

Starting development server at http://127.0.0.1:8000/

Quit the server with CTRL-BREAK.

打开浏览器,访问http://localhost:8000

PS1:启动的项目,显示的是英文,转换成中文显示

mysite/mysite/settings.py

LANGUAGE_CODE=’en_us’à ‘zh_Hans’

PS2:Django项目的启动,默认使用了8000端口

自定义启动端口

python manage.py runserver <port>

PS3web项目发布之后目标:数据共享——允许其他人访问我们的网站

指定ip地址和端口,允许通过网络地址访问

python manage.py runserver <ip>:<port>

注意:首先在mysite/mysite/settgins.py配置文件中,修改如下配置

ALLOWSED_HOST=[“*”,]

其次在启动项目时,通过如下命令启动

python manage.py runserver 0.0.0.0:8000

PS4:我们通过python manage.py..这样的方式,是通过内置的测试服务器启动并发布项目的,适用于开发!

当项目开发完成,实际部署上线时,要将web项目部署到独立的服务器上[以后]

l 创建第一个视图页面

首先在mysite/mysite/目录下,创建一个views.py视图模块

from django.http import HttpResponse

def index(request):

    return HttpResponse(“...”)

其次在mysite/mysite/urls.py路由文件中,添加url地址和处理函数之间的对应关系

from django.conf.urls import url

from django.contrib import admin

from . import views

urlpatterns = [

     url(r“^admin/”, admin.urls),

     url(r”^index/$”, views.index, name=’index’)

]

详细分析

Django是模块化管理文件的,所以不同功能的代码存放在不同的py文件中

路由相关:urls.py

设置相关:settgins.py

页面视图:views.py

网页视图开发:

导入了一个响应对象模块:django.http.HttpResponse

可以通过响应对象模块,给浏览器返回数据

def index(request):

    return HttpResponse(“..”)

路由模块:urls.py

什么是路由?路由就是从现实生活中的路由器抽象出来的一个概念,表示的url地址和对应的处理函数之间的对应[映射]关系

>>> 路由器:ip地址[请求路径]à 路由器à 个人PC[资源]

>>> 路由:url请求路径à 路由à 处理函数

路由:一种映射,一种对应,表示的是一种绑定关系

类比昨天的内容——网管接口的存在——控制器——分发请求

from django.conf.urls import url[路由对象:可以绑定一组对应关系]

urlpatterns = [

将第一个参数路径和第二个参数处理函数绑定在一起

# 请求第一个路径的时候->调用第二个参数[处理函数]

# 第三个参数《就是给这个路由对象命名》

   url(r’^login/$’, views.login, name=’login’),

]

上午复习回顾

l Django概述:Django的发展历程

n Django的优势[重要]

l Django安装

n 模块[module]和框架[framework]区别?

n pip / easy_install

l Django的项目创建

n django-admin startproject <name>

n 项目文件结构[创建好的项目,每个文件都有什么用途]

l 项目视图函数

n 根项目——视图处理模块views.py

n 视图处理函数定义

l 项目路由操作

n 根项目——路由模块urls.py

n 路由对象url(path, func, name)

PM课程:从一个故事开始……

l 创建Django项目[伴随着创建Django项目,会自动创建根项目]

n django-admin startproject myweb

n myweb/ 项目根目录

u myweb/ 根项目

u manager.py 命令模块

l 进入项目根目录执行命令创建子模块应用

n django-admin startapp myblog

n myweb/ 项目根目录

u myblog/ 子模块应用[子项目]

u myweb/ 根项目

u manage.py 命令模块

Django项目文件结构

|-- myweb/         项目根目录

      |-- myweb/      项目根项目

            |-- __init__.py

            |-- settings.py   配置文件

            |-- urls.py    主路由文件 

            |-- views.py   根项目视图模块

            |-- wsgi.py

      |-- myblog/     项目子模块应用[子项目]

            |-- admin.py    后台数据注册模块

            |-- app.py       子项目描述模块

            |-- urls.py      子路由文件,需要包含到主路由中使用

            |-- views.py     子项目视图模块

            |-- models.py    子项目中的类型定义模块

      |-- manage.py  命令模块

项目结构:

通过根项目来管理各个子项目模块,实现项目功能的可伸缩性操作

软件的开发原则

MVC:是一种传统的流程处理模式,是一种编程思想,主要由数据模型Model、控制器Controller以及视图View组成的一个完成流程处理模式,首先由和用户直接交互展示的视图View可以发起请求,由控制器Controller进行请求的分发,调用制定的数据处理函数对数据Model进行增删改查操作,完成一个功能的完整处理过程!

核心部分是控制器,主要实现视图和数据模型之间的数据交互的!



Django在发展的过程中,为了达到非常高效率的网站结构搭建,提供给开发人员一个干净整洁的项目结构,让开发人员更多的精力集中在功能开发上、而不是技术实现上,所以Django对于常规的MVC处理模式进行了升级——MVT处理模式

Django是实现了MVT处理模式的高效率开发的web框架

MVT处理模式,是在MVC处理模式上,升级得到的一种更加符合实际项目开发流程的处理思路;在这种处理模式中,将功能比较单一的控制器Controller部分,封装成了路由!

由路由来完成请求的分发操作[路由是通过配置实现的]

编程——是为了更好的解决现实生活中的问题,编程~目标->高度还原生活

生活中的各种问题,都是编程的实际体现,编程中遇到的各种编程方式,都是生活中的处理思路的还原

MVC和MVT就是这样还原出来的!

衍生的分层编程思想:代码在操作的过程中,根据不同的功能出现了分层,上层代码可以调用下层代码的函数,下层代码只能返回数据给上层代码,不能跨层调用,同层之间可以互相平行调用!

小结:

MVC处理模式|编程思想

MVT处理模式|编程思想

分层


目标:

l 理解并总结Django的开发优势

l 理解并总结Django项目的文件结构和项目结构

l 掌握Django项目和子模块应用的创建

n 掌握根项目视图的开发

n 掌握子模块视图的开发

n 掌握路由的操作

l 理解MVC和MVT编程思想

n 扩展:了解代码分层思想

l 扩展:了解虚拟开发环境的搭建和使用以及它的意义!

扩展内容:虚拟开发环境

A君,入职HW公司;从事python开发

l 场景1:项目组~同时在开发py2和py3的项目,需要临时切换到不同的python开发环境下进行对应的项目开发

n 解决方案1python2命令表示py2环境;python3命令表示py3环境,使用的时候通过执行不同的命令来切换不同的python开发环境【缺陷:某些第三方模块封装的代码中,自动调用执行的是python命令】

n 解决方案2:通过软件工具,来控制当前系统中使用的python命令是哪个python环境[python2或者python3]à pyenv软件

l 场景2:项目组~使用的统一的python开发环境——python3

n 但是:同时维护开发着django1.8版本的项目和django1.11版本的项目

n 解决方案:通过软件创建一个虚拟环境[局部环境],指定某个项目使用某个特殊的第三方模块——virtualenv

virtualenv虚拟环境的使用

l 安装

pip install virtualenv        # virtual environment

l 在指定的文件夹中,创建一个虚拟环境

项目文件夹结构

|-- worker/

|-- django_1_8/     # 文件夹存放的django1.8的项目

|-- django_1_11/    # 文件夹存放的django1.11的项目

# 进入django_1_11/目录

cd worker/django_1_11/

# 创建一个虚拟环境

virtualenv d_1_11

# 进入虚拟环境

./d_1_11/Scripts/activate

# 进入django_1_8/目录

cd worker/django_1_8/

# 创建一个虚拟环境

virtualenv d_1_8

# 进入虚拟环境

./d_1_8/Scripts/activate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值