MVC

  • 大部分开发语言中都有MVC框架
  • MVC框架的核心思想是:解耦
  • 降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用
  • m表示model,主要用于对数据库层的封装
  • v表示view,用于向用户展示结果
  • c表示controller,是核心,用于处理请求、获取数据、返回结果

MVT

  • Django是一款python的web开发框架
  • 与MVC有所不同,属于MVT框架
  • m表示model,负责与数据库交互
  • v表示view,是核心,负责接收请求、获取数据、返回结果
  • t表示template,负责呈现内容到浏览器

注册页面展示

Django框架示意图  MVT   T:template

安装虚拟环境的命令:

1.sudo pip install virtualenv #安装虚拟环境

2.sudo pip install virtualenvwrapper #安装虚拟环境扩展包

3.编辑家目录下面的.bashrc文件,添加下面两行

  export WORKON_HOME=$HOME/.virtualenvs    (注意=前后不要加空格)

  source /usr/local/bin/virtualenvwrapper.sh
4.使用 source .bashrc 使其生效

创建虚拟环境命令:

  mkvirtualenv -p python3 虚拟环境名   (如果有多个版本的python)     (有问题)

  • 创建:mkvirtualenv [虚拟环境名称]
  • 删除:rmvirtualenv [虚拟环境名称]
  • 进入:workon [虚拟环境名称]
  • 退出:deactivate
  • 所有的虚拟环境,都位于/home/.virtualenvs目录下
  • 查看当前的所有虚拟环境:workon [两次tab键]
  • 查看虚拟环境中已经安装的包
  pip list
  pip freeze

cd /usr/local/lib      里面放的是该虚拟机python 的版本

虚拟环境是真实python环境的复制版本

新版本安装虚拟环境

python3 -m venv text2   直接安装python3虚拟环境 如果没有venv则sudo apt install python3-venv

安装好之后在home中,下一步要激活进入text2环境 source ./text/bin/activate

在python3 的虚拟环境中安装django

pip install django -i 国内下载源

创建项目

  • 命令django-admin startproject test1
  • 进入test1目录查看

目录说明

  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互
  • 内层的目录:项目的真正的Python包
  • _init _.py:一个空文件,它告诉Python这个目录应该被看做一个Python包
  • settings.py:项目的配置
  • urls.py:项目的URL声明
  • wsgi.py:项目与WSGI兼容的Web服务器入口

(二)在window下使用anaconda进行Django环境的安装

anaconda+python3.5+django2.2.1

1、下载安装anaconda

python3.7.exe 只是python基础包

anaconda是python的发行版,内置了大量的扩展包,主要是数据分析人工智能相关的包。还可以搭建相互隔离的虚拟环境。

https://www.anaconda.com/distribution/

conda -V查看当前anaconda版本

2、配置提高conda的速度

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --set show_channel_urls yes

3、创建指定python版本的虚拟环境

conda create -n mydjango python=3.5.2

4.进入虚拟环境

activate mydjango

pip freeze查看当前安装包

conda常用命令:

  • 查看所有环境: conda info --envs
  • 新建虚拟环境:conda create -n mydjango python==3.5.2
  • 删除虚拟环境:conda remove -n mydjango --all
  • 进入虚拟环境:activate mydjango
  • 退出虚拟环境:deactivate

5、配置提高pip的速度

创建文件c:\users\Administrator\pip\pip.ini,写入

[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

6、安装django

  • 进入虚拟环境 activate myjango
  • 安装django   :pip install django==2.2.1
  • 安装ipython:pip install ipython
  • 测试:1.import django     2.django.get_version()

(三)Django HELLO WORLD

实现第一个django项目案例

1、找到一个文件夹存放代码

2、在当前文件夹下创建项目

  shift+右键,在此处打开命令窗口 1.先进入虚拟环境:activate mydjango  2.创建项目:django-admin startproject django01

3.使用pycharm打开project

project01项目目录

project01包

__init__.py:项目主目录的初始化文件

settings.py:项目的配置文件

urls.py:项目的路由文件

wsgi.py:项目的部署文件

db.sqlite3:未完成的sqlite数据库文件

manage.py:项目的管理文件,负责在开发模式下的项目控制,项目启动,数据库同步

补充:wsgi在python是一个接口规范,规范了服务器与框架之间的接口,目的是为了让框架与服务器都兼容。

  方法的名字是application

  参数environ是请求信息字典

  参数start_response是响应行和响应头

  方法的返回值是响应体

  框架逻辑代码提供这个方法

  def application(environ, start_response):

  start_response('200 OK', [('Content-Type', 'text/html')])

  return '<h1>Hello, web!</h1>'

  服务器调用application(x,y),显示内容为application的返回值,application 在框架中,框架也在服务端 

4.设置虚拟环境中的解析器

5.使用管理文件manage.py启动服务

  python manage.py runserver 可以加ip:port

  如果使用ip访问还需要在setting中设置

  ALLOWED_HOSTS = ['10.10.9.133']
  

6.访问

7.视图views

  在包下创建views.py文件

注意:试图函数要传参数request ,这个参数就是django将请求信息封装成的对象

8、配置路由

url:网址

http://10.10.9.197:998/admin/login/?next=/admin/

其中http是协议,还有其他协议https,ftp等等

10.10.9.197:998是ip和端口

/admin/login/?next=/admin/是请求路径

?next=/admin/ next是参数的名字,/admin/是参数的值

路由:类似企业的前台,当有请求通过,有路由功能指向具体处理的部分。

9、访问测试

10、流程分析

补充:

(四)HTTP

http是一个web协议,规定了web浏览器客户端与服务器端之间通信的规则。

如果响应体里有html标签(img css js等资源)客户端再次发送请求获取这些资源。

请求和响应都是有格式的。

请求格式

请求行

请求头

空行

请求体

响应格式

响应行

响应头

空行

响应体

参考网址

https://www.cnblogs.com/CodingUniversal/p/7524088.html

https://blog.csdn.net/qq_30553235/article/details/79282113

CondaHttpError SSLError解决办法:

缺少SSL模块:

(五)wsgi(扩展)

1、为什么要定义wsgi协议

让python逻辑代码(框架)与服务器兼容

2、协议内容是什么

服务器中会执行application(environ,start_response),框架代码必须提供可以调用application函数/对象。

方法的名字是application

参数environ是请求信息字典

参数start_response响应函数,可以发送响应行和响应头

方法的返回值是响应体

3、如何使用

逻辑代码实现application函数

启动符合wsgi的服务器

web访问

了解了HTTP协议和HTML文档,我们其实就明白了一个Web应用的本质就是:

浏览器发送一个HTTP请求;

服务器收到请求,生成一个HTML文档;

服务器把HTML文档作为HTTP响应的Body发送给浏览器;

浏览器收到HTTP响应,从HTTP Body取出HTML文档并显示。

所以,最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,

接收用户请求,从文件中读取HTML,返回。Apache、Nginx、Lighttpd等这些常见的静态服务器就是干这件事情的。

如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、

发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。

正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。

因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口,让我们专心用Python编写Web业务。

这个接口就是WSGI:Web Server Gateway Interface。

WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。我们来看一个最简单的Web版本的“Hello, web!”:

wsgi在python是一个接口规范,规范了服务器与框架之间的接口,目的是为了让框架与服务器都兼容。

服务器监听端口号,接收请求,给予响应。

方法的名字是application

参数environ是请求信息字典

参数start_response是响应行和响应头

方法的返回值是响应体

框架逻辑代码提供这个方法

def application(environ, start_response):

start_response('200 OK', [('Content-Type', 'text/html')])

return ['<h1>Hello, web!</h1>'.encoding('utf-8')]

上面的application()函数就是符合WSGI标准的一个HTTP处理函数,它接收两个参数:

environ:一个包含所有HTTP请求信息的dict对象;

start_response:一个发送HTTP响应的函数。

服务器调用application(x,y)

mydemo.py

def application(environ, start_response):

start_response('200 OK', [('Content-Type', 'text/plain')])

return ['<h1>Hello, web!</h1>'.encode('utf-8')]

myserver.py

# 从wsgiref模块导入:

from wsgiref.simple_server import make_server

# 导入我们自己编写的application函数:

from mydemo import application

# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:

httpd = make_server('', 8888, application)

print("Serving HTTP on port 8888...")

# 开始监听HTTP请求:

httpd.serve_forever()

1.1Django简介和虚拟环境配置的更多相关文章

  1. Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...

  2. Python小世界:项目虚拟环境配置的N种方法

    前言 和其他大多数现代编程语言一样,Python对包和 模块的下载.存储以及管理有其自己的一套方法.但是当我们同时开发多个项目工程的时候,不同的项目会将第三方的包存放在相同的路径下.这就意味着,如果有 ...

  3. PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora、sqlnet.ora、tnsnames.ora原理解释

    PLSQL连接ORACLE配置字符串简介 oracle网络配置 三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora原理解释 oracle网络配置三个配置文件 lis ...

  4. 【vim】简介与基本配置

    vim是一款非常强大的文字编辑软件,是各种类UNIX系统标配的文本编辑工具.相信此文的读者对它应该不会陌生,在这里就不做介绍了. 1.为什么要使用vim 在认识vim之前,我用过好多IDE:Visua ...

  5. twemproxy 简介、安装配置

    twemproxy 简介.安装配置 http://www.xuchanggang.cn/archives/993.html

  6. python3 虚拟环境配置

    CentOS7 python3 虚拟环境配置 1. 安装依赖包 yum -y install wget gcc epel-release git 2. 安装 Python3.6 yum -y inst ...

  7. Windows Python虚拟环境配置(Distribute + pip + virtualenv + virtualenvwrapper-powershell)

    对于Python开发新手,很多人会迷茫那些各种名目的工具和概念,如Python2.7, Python3.3, Distribute, pip, virtualenv,Setuptools, easy_ ...

  8. 【教程】基于Ubuntu系统的PyTorch虚拟环境配置

    目录 一.PyTorch虚拟环境配置 二.PyTorch虚拟环境使用 三.常用命令 Editor: Veagau Time: 2019/10/17 一.PyTorch虚拟环境配置 该部分操作均在终端( ...

  9. Python库的优雅安装及PyCharm虚拟环境配置

    一.安装python库 安装python库有几种方式: 1. 使用pip命令行,如:pip install Pillow 2. 在pycharm中安装 3. 使用Anaconda批量安装常用模块 在使 ...

随机推荐

  1. 利用LDAP操作AD域

    LDAP操作代码样例  初始化LDAP 目录服务上下文 该例子中,我们使用uid=linly,ou=People,dc=jsoso,dc=net这个账号,链接位于本机8389端口的LDAP服务器(ld ...

  2. Python入门基础(3 下)

    接着讲列表里面的一些操作吧 列表元素访问与计数 1.统计指定元素在列表中出现的次数使用count(),这就不必细说了,直接看代码,需要记住的是括号里面放的是元素 list = [1,5,5,5,5,8 ...

  3. CDQZ集训DAY2 日记

    依然很爆炸. T1上来有50分暴力分,打完后注意到了后50分的随机数据,开始想怎么去对付他.然后就开始思考随机数据意味着什么.想了想,想打一个扫描线或者分治.决策了一下还是打了一个扫描线+链表.然而只 ...

  4. 附录:1-Grain生命周期-译注

    Grain Lifecycle Grains are logical entities that always exist, virtually, and have stable logical id ...

  5. 【最短路径之dijkstra(迪杰斯特拉)算法】

    这一章主要介绍最短路径的算法之一,dijkstra算法. 概念 :迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点 ...

  6. Excel催化剂开源第5波-任务窗格在OFFICE2013中新建文档不能同步显示问题解决

    在OFFICE2013及之后,使用了单文档界面技术,不同于以往版本可以共享任务空格.功能区.所以当开发任务窗格时,需要考虑到每一个工作薄都关联一个任务窗格. 背景介绍 单文档界面摘录官方定义如下:对 ...

  7. python函数闭包-装饰器-03

    可调用对象 callable()  # 可调用的(这个东西加括号可以执行特定的功能,类和函数) 可调用对象即  callable(对象)  返回为  True  的对象 x = 1 print(cal ...

  8. MyBatis-Plus 使用说明介绍

    先看一下和MyBatis 不同点说明: @GetMapping("/select_sql") public Object getUserBySql() { User user=ne ...

  9. python 文件读写总结

    这是个人在项目中抽取的代码,自己写的utils的通用模块,使用的框架是tronado,包括了文件的读写操作,api格式的统一函数,如有特别需要可以联系我或者自己扩展,刚学python不久,仅供参考,例 ...

  10. 基于SDN网络的负载均衡研究与实现

    为什么需要软件定义网络 1.网络缺乏可扩展性,创新正在停滞不前.   我们最新的研究发现,几乎每两个组织中就有一个认为需要将网络功能扩展为采用SDN的主要业务触发因素,而不是其他催化剂.这一统计数据一 ...