django python mange.py runserver 源码

入 口

    mange.py文件

      execute_from_command_line函数 输入参数为['manage.py', 'runserve'] sys模块监听命令行输入 并将值放入argv
      并执行

进入后 直接到达 django-core-mangement- __init__ 内

execute_from_command_line函数
   执行后 ---ManagementUtility 实例化 并且执行了execute() 方法

其中 实例化 ManagementUtility 目录结构如下


实例化运行__init__

  

execute 执行 官方注释为:

"""
Given the command-line arguments, figure out which subcommand is being
run, create a parser appropriate to that command, and run it.
"""

给定命令行参数,找出哪个子命令创建适合该命令的解析器,然后运行

来到fetch_command函数内 发现最终返回klass对象执行其run_from_argv方法 而当前klass对象经过了load_command_class 映射 为方便理解  后面我们再去看


klass 对象 执行 run_from_argv 如下

进入 execute后

注意 handle 函数 会优先 执行当前对象的handle 没有之后再去寻找父类handle
而我们当前对象为runserver的commands

之所以能映射到management.commmands.runserver.command 是之前提到了的 load_command_class  做的映射

load_command_class 如下:

module = import_module('%s.management.commands.%s' % (app_name, name))  #其内部字符串为 django.contrib.staticfiles.management.commands.runserver #提示import_module就是常用的importlib.import_module 即以字符串类型的索引导入类

我们按照路径去到 runserver模块内部 发现内部如下

因为其内部并没有handle 函数 所以我们进入其父类 寻找

我们进入core.management.command.runserver 找到了handle

进过上面的映射 我们终于找到了 runserver 下的handle 并执行run函数

但是并没有看到我们希望的核心代码 经过打印我们知道 此时use_reloader =True 意味着我们执行

autoreload.run_with_reloader(self.inner_run, **options)
进入其内部

来到start_django 终于 终于` 我们看到了django 启动的核心

django python mange.py runserver 源码的更多相关文章

  1. No module named _sqlite3 django python manage.py runserver

    linux 执行django(python manage.py runserver),报错No module named _sqlite3,需要安装sqlite-devel,再重新编译安装python ...

  2. django python manage.py runserver 流程

    python manage.py runserver 流程分析 版本 python27 django 1.0 搭建可运行的环境 创建python27 虚拟环境 github 下载 django-1.0 ...

  3. django源码分析 python manage.py runserver

    django是一个快速开发web应用的框架, 笔者也在django框架上开发不少web应用,闲来无事,就想探究一下django底层到底是如何实现的,本文记录了笔者对django源码的分析过程 I be ...

  4. Django的settings文件部分源码分析

    Django的settings文件部分源码分析 在编写Django项目的过程中, 其中一个非常强大的功能就是我们可以在settings文件配置许多选项来完成我们预期的功能, 并且这些配置还必须大写, ...

  5. DRF框架(一)——restful接口规范、基于规范下使用原生django接口查询和增加、原生Django CBV请求生命周期源码分析、drf请求生命周期源码分析、请求模块request、渲染模块render

    DRF框架    全称:django-rest framework 知识点 1.接口:什么是接口.restful接口规范 2.CBV生命周期源码 - 基于restful规范下的CBV接口 3.请求组件 ...

  6. python 运行python manege.py runserver时报错:“no module named djangorestframework” 的解决方案

    python 运行python manege.py runserver时报错:“no module named djangorestframework” 的解决方案 importerror:no mo ...

  7. python重试库retryiny源码剖析

    上篇博文介绍了常见需要进行请求重试的场景,本篇博文试着剖析有名的python第三方库retrying源码. 在剖析其源码之前,有必要讲一下retrying的用法,方便理解. 安装: pip insta ...

  8. python manage.py runserver指定端口和ip

    python manage.py runserver 0.0.0.0:8000 在本地运行程序,python manager.py runserver打开http://127.0.0.1:5000端口 ...

  9. python manage.py runserver 0.0.0.0:8000

    python manage.py runserver 这种命令行,可以在服务器端输入IP:8000直接访问 在 python manage.py runserver 127.0.01:8000 在服务 ...

随机推荐

  1. idea 开发 webpack项目时,只要已加入SVN 版本控制 一直 updating 问题解决

    场景描述,这是一个困扰我很久的一个问题,一直百度,都解决不了,今天自己通过设置终于解决了,慢慢的都是辛酸泪,赶快写个笔记记录一下. 对于idea 开发 vue-cli+webpack 项目,idea  ...

  2. python pexpect总结

    基本使用流程 pexpect 的使用说来说去,就是围绕3个关键命令做操作: 首先用 spawn 来执行一个程序 然后用 expect 来等待指定的关键字,这个关键字是被执行的程序打印到标准输出上面的 ...

  3. 【Android】SDK的配置

    1:Android Studio 下载   安装后创建项目 2:  打开settings 3:下载后,配置SDK 4:下载jdk1.8.0_74.rar 解压   加入环境变量 5:下载夜神模拟器,加 ...

  4. VNC远程控制,如何使用VNC远程控制来管理公司?

    VNC是功能强大的远程操作软件,可以实现日常的远程连接操作:如果稍加利用,可以实现公司的日常管理:既能够节省自身的时间,还可高效的完成这个功能! 我们可以使用:服务器管理工具来进行相关的操作 一.首先 ...

  5. 跨域解决方案 - JSONP

    目录 1. 定义 2. JSONP 解决跨域 3. 应用场景 4. 代码演示 1. 定义 在HTML 中, script 标签有两个个性质: script 标签可以不受同源策略的限制去访问服务器资源, ...

  6. InnoSetup汉化版打包工具下载-附带脚本模板

    InnoSetup汉化版打包工具下载地址: https://www.90pan.com/b1907264 脚本模板 ; 脚本用 Inno Setup 脚本向导 生成.; 查阅文档获取创建 INNO S ...

  7. java方法句柄-----2.方法句柄的获取、变换、特殊方法句柄

    目录 1.获取方法句柄 1.1查找构造方法.一般方法和静态方法的方法句柄 1.2 查找类中的特殊方法(类中的私有方法) 1.3 查找类中静态域和一般域 1.4 通过反射API得到的Constructo ...

  8. Java实现 蓝桥杯VIP 基础练习 FJ的字符串

    问题描述 FJ在沙盘上写了这样一些字符串: A1 = "A" A2 = "ABA" A3 = "ABACABA" A4 = "AB ...

  9. Java实现蓝桥杯互补二元组

    分三处 1.当差值为0并且只有一个二元组就不管他 2.当差值为0并且二元组个数>=1加上他并减去它本身 3.当差值为存在并且不为0时直接加上他 因为都计算了两次,所以最后ans/2 用了map的 ...

  10. Java实现第九届蓝桥杯第几天

    第几天 题目描述 2000年的1月1日,是那一年的第1天. 那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. import java.util.Cal ...