问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

django项目如何运行(django项目运行命令)

发布网友 发布时间:2024-10-03 01:44

我来回答

1个回答

热心网友 时间:2024-11-11 07:02

本篇文章首席CTO笔记来给大家介绍有关django项目如何运行以及django项目运行命令的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、Django部署——uwsgi+Nginx(超详细)2、腾讯云python系列之部署Django流程3、如何把django写成service启动4、Django源码阅读 (一) 项目的生成与启动5、django 项目生产环境部署6、python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件Django部署——uwsgi+Nginx(超详细)

环境:

python3.6

centos 7

Django1.11

用Django写了个小网站,只能在自己本地跑一跑!这怎么行?听说可以部署在云服务器上,这样别人就可以访问了!

从哪儿开始?就从Django开始吧!老规矩,按步骤:

这里不讲Django项目实施过程,假设你已经写了一个Django项目,并且在本地 127.0.0.1:8000 能够跑起来。喏,给你个参考,项目大概长这样:

也就是项目目录下的settings.py文件,主要强调几个地方:

①关闭DEBUG模式:

②修改ALLOWED_HOSTS:

③配置静态文件存放路径:

修改好配置之后执行:

这个没什么说的。。。在自己的云服务器上装好这两个工具

安装好uwsgi后最好验证一下,验证方法:

创建一个test.py文件:

启动uwsgi服务器:

如果可以正常启动而不报错那就应该没问题,不放心的话再在终端验证一下:

在uwsgi.ini里进行如下配置:

找到nginx的配置文件夹,centos7的nginx配置文件在/etc/nginx下,该路径下有一个nginx.conf总配置文件,还有两个文件夹./conf.d、./default.d,我们将nginx.conf复制一份到conf.d文件夹下,命名为nginx.conf(或者项目名.conf)进行如下修改(根据中文注释进行相应配置即可):

进入uwsgi.ini文件夹下执行:

在终端执行:

参考资料:

刘江的博客

博客园

知乎问答

无名Blog

自强学堂Django教程

Django文档

empty_xl Blog

腾讯云python系列之部署Django流程

我的是centos系统

我们通过腾讯的控制台的登录按钮,进入到远程登录的界面,如图1为腾讯云的控制台界面。图2为登录以后的密码输入窗口

进入登录界面以后,会是图3这样子的情况,我们输入ls,会发现没有任何文件, 输入pip list 会提示没有安装pip,而输入python时,会显示默认安装了python2.7.5版本

一、首先我们要安装pip,根据自己的系统自行选择

centos类系统: sudo yum install python python-pip

ubuntu类系统:sudo apt-get install python python-pip

安装好以后pip list一下,看看都有哪些python安装包

二、安装django

我安装的Django版本为1.9.8的,根据自己的情况,更改后面的版本号

sudo pip install Django ==1.9.8

可能会出现图4这样的问题,原因是我们pip 版本太低,直接按照提示升级我们的pip

更新了pip以后,安装可能会出现如图5这样的问题,我们不要在==两边加空格,因为加空格会导致不识别django的版本。

安装完以后你会发现自己找不到Django放在哪里了,其实我的django被安装在了

/usr/lib/python2.7/site-packages/

并且我们要执行创建django的命令在django的bin目录下,如图6

/usr/lib/python2.7/site-packages/django/bin

进入到该目录下,运行django-admin.py startproject FirstProject,创建出FirstProject的项目。就会在该目录下创建出FirstProject这个项目,进入项目,运行python manage.py runserver

问题来了,我们运行以后,不要点击,这个是进不去的,我们应该通过腾讯云的公网ip来访问网站,但又有同学发现通过公网的ip也无法访问我们的网站,这是因为自己的腾讯云没有打开相应的端口,所以无法访问。开放端口在安全组这个选项,如图7

进入安全组,新建我们的开放端口,我开放的是80端口。如图8

开放端口后,我们重新python manage.py runserver 0.0.0.0:80,如图9

通过公网ip,就可以直接访问我们的网站了。如图10

如何把django写成service启动

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

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

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入口,即可经过中间件到达路由进行分发。

django 项目生产环境部署

安装 uwsgi

1、 pip3 install uwsgi

2、在django项目下新建myuwsgi.ini文件 (文件名可自取)

3、进入项目根目录执行:

没有报错则启动成功

4、配置nginx

在nginx 同级目录下创建 nginx.conf- my.conf文件

进入 nginx.conf 配置

重启 nginx -s reload

python——Django项目开发:配置项目/static/路径,调用css、img、js等静态文件

在Django项目开发中,不能像正常web开发一样通过 'imgs/bg.jpg' 访问本地静态文件,需要做一些配置,才能实现静态文件的访问。

一、首先在项目根路径下新建一个static文件夹,然后在static文件夹下可以新建相应的css、imgs、js等文件夹,用于存放css、img、js等静态文件。

二、项目配置

1、打开settings.py,在底部添加:

2、打开urls.py,在 urlpatterns 中添加:(注意,如果你在blog目录下也建立了urls.py,那么就得在blog/urls.py中做修改。别忘了import settings):

(不过我经过实测,不加这一个,也可以完成静态文件的访问)

3、在html模板最上面添加:

然后在需要的地方按照这个格式进行调用,如:

最后重新运行项目,img等本地静态文件就可以被django找到了,这时模板对应的页面就可以显示使用img等文件了。

结语:以上就是首席CTO笔记为大家整理的关于django项目如何运行的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django项目运行命令、django项目如何运行的相关内容别忘了在本站进行查找喔。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...示意图,请据图回答 (1)桃花结构中的雌蕊包括图中的[ ]___百度知 ... 下图是桃花的结构示意图。 (1)图中___构成雌蕊;花粉在___中。(2)此... 如图是桃花的结构示意图,下列叙述错误的是( )A.⑤能发育成种子B.花粉... 商标注册哪家更优惠些? 如何读懂名著《西游记》 除了原著你还可以通过以下方式读懂西游 oppo手机正在运行的程序怎么关闭 oppo手机正在运行的程序怎样关闭_百度... “练色亭皋月”的出处是哪里 “壶清迷练色”的出处是哪里 “泻瓯如练色”的出处是哪里 “练色泓澄玉清水”的出处是哪里 如何取一个希腊名字? 便秘时有哪些食疗蜂蜜方可以尝试? IBM r400 A42玩魔兽世界WLK会卡么??够么? ibmT40更新bios断电 起不来了怎么办 黑屏了 以前也有过 是待机后过一会... IBM T40玩魔兽世界怎么搞才不卡 我的IBMT40花屏. 求救高手IBMT40笔记本黑屏时有滋滋的声音 黑屏后在又光的情况下能看到... 金蝶k3仓库管理模块运行很慢怎样办 ...到医院去查说是幽门螺旋杆菌感染,请问要如何治疗好防护? 我的笔记本是IBMt40,玩游戏的时候老是死机,修电脑的说是显卡坏了,请问... 我的笔记本是IBM T40 现在一受碰撞或者开魔兽这样的游戏就黑屏 死机... 小孩有幽门螺旋杆菌怎么治疗 cs1.6.使用了cs1.6死亡模式yapb机器人补丁,怎么加电脑人 关于CS1.6地图zm_dust2_final不能加机器人的问题 cs1.6下载的地图不能加机器人! cs1.6加油站很卡 三代试管能够帮助患者解决什么问题 三种食疗缓解女性便秘 缓解女性便秘的食疗方法 CS1.6加机器人后卡 试管婴儿技术能避免遗传性疾病吗 django项目如何运行(django项目运行命令) 耳朵总感觉有东西堵着是怎么回事 耳朵里耳屎已经掏光了,可是总感觉耳朵里还有东西,说话时总感觉耳朵里... 游戏名字要带微风的 我的耳朵里不知道有什么,总觉得有东西在哪里堵着。但是洗过之后还有... 总感觉耳朵里有东西在动怎么回事 ...办事,老板说要带营业执照,请问是带正本出去还是带副本出去? 小孩耳朵里总是粘乎乎是什么原因 总觉得耳朵里像有什么东西堵住了一样,掏耳朵的时候 大蒜烩肚条做法: 便秘用什么方法治 肚条怎么做好吃又简单? 2相似三角形面积之比为2:3那相似比呢? nex是什么 "NEX"代表的英文单词是什么? WNX是“Warnex, Incorporated”的缩写,它代表什么? 赤峰干哥俩食品有限责任公司简介 梦见与人激烈争吵打架 "MNF"缩写为何意,即“Macquarie NexGen Global Infrastructure Corpor... 治便秘吃什么好