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

如何运行导入的django项目?

发布网友 发布时间:2024-09-12 03:33

我来回答

1个回答

热心网友 时间:2024-10-12 03:16

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

我有个linux的虚拟主机,我想运行django网站,怎么办?

我是linux主机,我这样在本地运行django

1在终端进入django项目的文件夹,是有manage.py的那个目录

2然后运行pythonmanage.pyrunserver

就可以跑起来了

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

我的是centos系统

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

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

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

centos类系统:sudoyuminstallpythonpython-pip

ubuntu类系统:sudoapt-getinstallpythonpython-pip

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

二、安装django

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

sudopipinstallDjango==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.pystartprojectFirstProject,创建出FirstProject的项目。就会在该目录下创建出FirstProject这个项目,进入项目,运行pythonmanage.pyrunserver

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

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

开放端口后,我们重新pythonmanage.pyrunserver0.0.0.0:80,如图9

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

如何优雅的导入Django项目?!

*创建成功后,运行项目,我们就可以进入管理页面,开始玩我们的项目了:

pycharm怎么导入django工程

首先在黑框运行django-admin.py

startproject

myproject创建项目myproject

然后打开pycharm,点击菜单上的《文件》

点击《打开》,选中你的myproject文件夹

弹出框中选新窗口打开

这样项目就导入到pycharm中了

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项目的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
折儿是什么意思? 什么叫饭折? 饭折是什么意思 私募股权基金6种模式 私募投资业务管理系统 火山仙泉天然矿泉水产品特点 用苏打片带吃带洗真的能生男孩吗 凡山天然苏打水怎么样 美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 在CentOS8上搭建Python3.8运行环境 vga和dvi接口有什么区别 药学考研流程及费用 药学基础综合考研时间分配 山东大学药学考研(349药学综合)经验分享 眼睛里进去了个东西弄出来后怎么光流泪呢,视力还模糊 国考没有上传愿照片,只上穿处理后的照片可以吗 国考照片以后要用吗 脑垂体增大是怎么回事 脑垂体增大怎么治疗 脑垂体增大是什么原因,怎么治 脑垂体增生怎么治疗 脑垂体增生怎么回事 脑垂体增生是什么病 脑垂体增生能治好吗 脑垂体增大严重吗 北大荒酒的历史(北大荒酒业有限公司什么时候成立) 北大荒传奇白酒是贴牌吗(北大荒传奇酒42度价格表) 帮信罪二次开庭会不会当场判 帮信罪一审会当庭宣判吗 手机号能干违法的事吗 Win11Pro原版镜像+激活码+中文语言安装教程 老母庙关于老母庙 Dad这个英语翻译是 daddy的对应词是什么 网上银行如何买基金 什么是基金基金怎么买 招商银行买基金和支付宝买基金 纱窗安不进槽里怎么办? pco是什么 什么是封闭期 理查德米勒手表有什么亮眼的设计? 灭火器如何罐装 华为手机录屏很模糊,怎么办? 怎么把手机屏幕投屏到电视机 ?上海申花正式迈入久事时代 上海申花在中国足球上的成就有哪些?_百度... 久事集团能救申花足球队吗 2024年中国超级杯,上海申花1比0战胜上海海港,如何评价这场 2015年出的一首歌歌词里有一段是滴哒哒哒滴滴答答 中国人为什么不肯吃土豆 就盯着大米和白面