首页>>后端>>Python->如何运行一个django程序(django怎么运行代码)

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

时间:2023-12-01 本站 点击:0

本篇文章首席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 和 virtualenv wrapper,目的在于为 Python 项目创建独立的环境。

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

rm /usr/bin/python

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

2.

apt-get update    #升级软件包

apt-get install python3-pip #安装pip

pip install --upgrade pip #升级pip

安装 virtualenv

sudo pip install virtualenv

创建目录以存储您的 virtualenv

mkdir ~/.virtualenvs

安装 virtualenwrapper

sudo pip install virtualenvwrapper

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

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh

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

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

apt-get install unzip #用于解压zip压缩包

创建一个新的虚拟环境

mkvirtualenv xxxxx

退出虚拟环境

deactivate

进入虚拟环境

workon xxxxx

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

pip install -r requirements.txt #用requirements.txt进行安装

然后进入你的项目,前提在虚拟环境下,python manage.py runserver 0.0.0.0:8000

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

然后添加安全组规则

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

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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/5704.html