• 1.1Django简介和虚拟环境配置


    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基础包

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

    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:usersAdministratorpippip.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:项目的管理文件,负责在开发模式下的项目控制,项目启动,数据库同步

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

      方法的名字是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,返回。ApacheNginxLighttpd等这些常见的静态服务器就是干这件事情的。

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

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

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

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

    这个接口就是WSGIWeb Server Gateway Interface

     

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

     

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

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

    方法的名字是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()

     

  • 相关阅读:
    java常见异常
    实现两个整数变量交换
    java抽象类与接口
    Java内部类用法
    单例模式
    easyUI下拉列表点击事件的使用
    Java中使用HttpRequest获取用户真实IP地址端口
    js-easyUI格式化时间
    1124
    ACM算法
  • 原文地址:https://www.cnblogs.com/talosant/p/11316047.html
Copyright © 2020-2023  润新知