如何运行一个django程序(django怎么运行代码)

兄弟,打扰一下,如何运行一个django程序(django怎么运行代码)
最新回答
南栀北辰

2024-11-02 01:19:08

本篇文章首席CTO笔记来给大家介绍有关如何运行一个django程序以及django怎么运行代码的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、如何把django写成service启动2、Python3.8安装配置Django环境(上)3、如何在阿里云上部署Django应用程序4、Django源码阅读(一)项目的生成与启动如何把django写成service启动

1、新建一个项目,每个项目目录下面会有一个manage.py文件,启用的命令中用的文件service命令。

2、执行启动服务的命令必须要到项目的根目录,在D:\django\newworldpythonmanage.pyrunserver中间直接打开django黑屏终端,选择service运行即可。

Python3.8安装配置Django环境(上)

Python3.8安装配置Django环境(上)

1、CMD查看python版本

2、CMD查看pip版本

3、pip安装Django,默认Django3

升级pip

4、查看Django版本

5、安装mysql

6、查看mysql版本

7、建立Django文件夹并进入,

8、开始一个django项目

9、运行服务器,测试Django项目

10、使用地址访问项目

如何在阿里云上部署Django应用程序

关于Django

Django是一个用Python语言写的开源Web框架,可帮助开发人员在构想形成后仅数小时内启动Web应用程序。它遵循模型视图模板(MVT)来构建应用程序,这可降低Web开发的复杂性,同时可让开发人员集中精力编写应用程序。它为网站地图、内容管理、用户鉴权、RSS提要及其他任务提供开箱即用的设置。一些高流量网站使用Django是因为它能够快速、灵活地进行调整,从而可满足流量波动高峰期的需求。

前提条件

为Python应用程序安装virtualenv和virtualenvwrapper,目的在于为Python项目创建独立的环境。

1.启动服务器,先把python3当作python默认启动,需要删除默认pythonlink文件,重新建立连接关系。

rm/usr/bin/python

ln-s/usr/bin/python3/usr/bin/python

2.

apt-getupdate????#升级软件包

apt-getinstallpython3-pip#安装pip

pipinstall--upgradepip#升级pip

安装virtualenv

sudopipinstallvirtualenv

创建目录以存储您的virtualenv

mkdir~/.virtualenvs

安装virtualenwrapper

sudopipinstallvirtualenvwrapper

将这两行添加到~/.bashrc的末尾,以便加载virtualenvwrapper命令。

exportWORKON_HOME=$HOME/.virtualenvs

source/usr/local/bin/virtualenvwrapper.sh

退出,然后重新打开您的shell,或者使用?.bashrcorsource~/.bashrc?命令重新加载.bashrc,然后一切准备就绪。

apt-getinstalllrzsz#可以直接把文件从桌面到xshell里

apt-getinstallunzip#用于解压zip压缩包

创建一个新的虚拟环境

mkvirtualenvxxxxx

退出虚拟环境

deactivate

进入虚拟环境

workonxxxxx

pipfreezerequirements.txt#导出该环境下所有依赖到requirements.txt文件

pipinstall-rrequirements.txt#用requirements.txt进行安装

然后进入你的项目,前提在虚拟环境下,pythonmanage.pyrunserver0.0.0.0:8000

还有一点是比较重要的,要进入你的阿里云,然后设置你的安全组配置

然后添加安全组规则

如图所示,你就可以在浏览器上访问你的网站了公网IP+8000(端口)

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

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

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

django-adminstartprojectHelloWorld即可生成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的类型是Commanddjango.contrib.staticfiles.management.commands.runserver.Commandobjectat0x00000101ED5163A0

重点是第二句,让我们跳到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程序的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么运行代码、如何运行一个django程序的相关内容别忘了在本站进行查找喔。