如何启动django模块(djangoadmin startapp)

导读:很多朋友问到关于如何启动django模块的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

django一个模块 怎么部署运行

1,首先打开eclipse在主要的视图界面找到最上方的window点击,然后将看到showview的选项,然后在右边就会出现你要显示的视图。2,如果在这里边没有要显示的视图,可以点击other,那里边都有,可以根绝快速查询进行模糊查询,找到以后双击即可。3,可以再左下角上选择你需要显示的视图。那个大同小异,等选择了需要显示的视图后,可以拖拽控制它现实的位置。

如何用Nginx部署Django

如果你在windows上开发的django项目。部署的话,需要分三步。

第一步:在linux下下载python用的依赖包,搭建python环境。将windows下的项目复制到linux下,使用django自带服务进行启动。

第二步:下载uwsgi模块并且编写配置文件来替代django自带的服务模块。

第三步:下载nginx包,编译安装。然后创建配置文件,配置nginx启动django项目的信息。然后访问即可。

如何启动django模块(djangoadmin startapp)  第1张

Django源码阅读 (一) 项目的生成与启动

诚实的说,直到目前为止,我并不欣赏django。在我的认知它并不是多么精巧的设计。只是由功能堆积起来的\"成熟方案\"。但每一样东西的崛起都是时代的选择。无论你多么不喜欢,但它被需要。希望有一天,python能有更多更丰富的成熟方案,且不再被诟病性能和可维护性。(屁话结束)

取其精华去其糟粕,django的优点是方便,我们这次源码阅读的目的是探究其方便的本质。计划上本次源码阅读不会精细到每一处,而是大体以功能为单位进行解读。

django-admin startproject HelloWorld 即可生成django项目,命令行是exe格式的。

manage.py 把参数交给命令行解析。

execute_from_command_line() 通过命令行参数,创建一个管理类。然后运行他的 execute() 。

如果设置了reload,将会在启动前先 check_errors 。

check_errors() 是个闭包,所以上文结尾是 (django.setup)() 。

直接看最后一句 settings.INSTALLED_APPS 。从settings中抓取app

注意,这个settings还不是我们项目中的settings.py。而是一个对象,位于 django\\conf\\__init__.py

这是个Settings类的懒加载封装类,直到 __getattr__ 取值时才开始初始化。然后从Settings类的实例中取值。且会讲该值赋值到自己的 __dict__ 上(下次会直接在自己身上找到,因为 __getattr__ 优先级较低)

为了方便debug,我们直接写个run.py。不用命令行的方式。

项目下建个run.py,模拟runserver命令

debug抓一下setting_module

回到 setup() 中的最后一句 apps.populate(settings.INSTALLED_APPS)

开始看 apps.populate()

首先看这段

这些App最后都会封装成为AppConfig。且会装载到 self.app_configs 字典中

随后,分别调用每个appConfig的 import_models() 和 ready() 方法。

App的装载部分大体如此

为了方便debug我们改写下最后一句

res的类型是 Command django.contrib.staticfiles.management.commands.runserver.Command object at 0x00000101ED5163A0

重点是第二句,让我们跳到 run_from_argv() 方法,这里对参数进行了若干处理。

用pycharm点这里的handle会进入基类的方法,无法得到正确的走向。实际上子类Commond重写了这个方法。

这里分为两种情况,如果是reload重载时,会直接执行 inner_run() ,而项目启动需要先执行其他逻辑。

django 项目启动时,实际上会启动两次,如果我们在项目入口(manage.py)中设置个print,会发现它会打印两次。

第一次启动时, DJANGO_AUTORELOAD_ENV 为None,无法进入启动逻辑。会进入 restart_with_reloader() 。

在这里会将 DJANGO_AUTORELOAD_ENV 置为True,随后重启。

第二次时,可以进入启动逻辑了。

这里创建了一个django主线程,将 inner_run() 传入。

随后本线程通过 reloader.run(django_main_thread) ,创建一个轮询守护进程。

我们接下来看django的主线程 inner_run() 。

当我们看到wsgi时,django负责的启动逻辑,就此结束了。接下来的工作交由wsgi服务器了

这相当于我们之前在fastapi中说到的,将fastapi的app交由asgi服务器。(asgi也是django提出来的,两者本质同源)

那么这个wsgi是从哪来的?让我们来稍微回溯下

这个settings是一个对象,在之前的操作中已经从 settings.py 配置文件中获得了自身的属性。所以我们只需要去 settings.py 配置文件中寻找。

我们来寻找这个 get_wsgi_application() 。

它会再次调用 setup() ,重要的是,返回一个 WSGIHandler 类的实例。

这就是wsgiapp本身。

load_middleware() 为构建中间件堆栈,这也是wsgiapp获取setting信息的唯一途径。导入settings.py,生成中间件堆栈。

如果看过我之前那篇fastapi源码的,应该对中间件堆栈不陌生。

app入口→中间件堆栈→路由→路由节点→endpoint

所以,wsgiapp就此构建完毕,服务器传入请求至app入口,即可经过中间件到达路由进行分发。

结语:以上就是首席CTO笔记为大家介绍的关于如何启动django模块的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

以上内容为新媒号(sinv.com.cn)为大家提供!新媒号,坚持更新大家所需的互联网后端知识。希望您喜欢!

版权申明:新媒号所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 k2#88.com(替换@) 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023-09-23 13:15
下一篇 2023-09-23 13:15

相关推荐

  • nft芯片在哪里?

    世界首条量子芯片生产线在哪里贴吧 中国上海。上海科技大学与中国科学院上海微系统与信息技术研究所联合研发的世界首条量子芯片生产线于2020年7月正式投入使用,位于上海市浦东新区张江高...

    2023-03-08
  • 云计算和大数据学哪个?

    导读:很多朋友问到关于云计算和大数据学哪个的相关问题,本文新媒号就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧! 大数据和云计算哪个好 大数据和云计算大数据好...

  • 怎么修改评价?

    手机淘宝评价怎么修改 1、打开我的淘宝打开淘宝的主界面后,点击右下角的我的淘宝按钮。点击我的评论进入到我的淘宝的页面后,点击下方的我的评论按钮就可以更改评论了。 2、修改中、差评的...

    2023-10-07
  • nft中国基于什么链,nft属于什么链

    周杰伦持有的BYAC无聊猿NFT被盗了,国内对NFT是如何监管的? 国内对于NFT的监管目前还在探索阶段,监管部门首先会取决于NFT的应用场景的使用,如果NFT的确可以为经济作出贡...

    2023-03-08
  • 学软件测试需要什么学历(软件测试能干到多少岁)

    软件测试需要什么学历?大专毕业自学可以吗? 1、软件测试相对来说学习简单,技术含量不高,那学习软件测试需要什么学历?学历不够,技术来凑。IT行业的这种选人标准一定程度上也是源于其本...

    2023-09-23
  • 怎么注册区块链基金?

    新加坡区块链项目合规注册? 新加坡有 Sandbox 机制,即只要任何在 Sandbox 中注册的Fintech公司,允许在事先报备的情况下,从事和目前法律法规有所冲突的业务。并且...

    2023-09-22
  • 区块链发票属于什么种类?

    区块链发票属于币链吗 发票如下: 不属于币链。所谓区块链发票,就是采用区块链技术,开出的一类电子发票,它和传统发票有非常大的不同。而币链一般指的是币链交易所,或者是币链网。 区块链...

    2023-03-08
  • 怎么区块链上班(区块链怎么入行)

    我想去区块链公司上班请问区块链公司都是做什么啊 主要是运用区块链技术布局各种应用场景及应用,如果有兴趣的话可以先学习区块链的知识 区块链如何工作 什么是区块链技术? 区块链技术是一...

    2023-03-08
  • 童程在线少儿编程(童程在线少儿编程客服)

    童程童美的少儿编程值不值得学? 小学生学习少儿编程可以。童程童美的少儿编程课程很靠谱,师资力量雄厚,教学认真负责。如需学习少儿编程,推荐选择童程童美。 童程童美的少儿编程课还不错,...

    2023-09-23
  • Javavue是什么?

    Java目前主流框架都有哪些? 1、java框架有SpringMVC、Mybatis、Dubbo、RabbitMQ等。 2、Spring:功能强大的组件粘合济,能够将你的所有的ja...

    2023-09-23

发表回复

登录后才能评论