导读:很多朋友问到关于如何打开别人的django项目的相关问题,本文恰卡编程网就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
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入口,即可经过中间件到达路由进行分发。
Djago如何启动项目和连接
1:
这三个按钮都是向下的三角,应该是切换项目的
2:在django的项目里链接数据库都是在settings.py文件中配置的
'default': {
'ENGINE': 'django.db.backends.oracle',
'NAME': 'orcl',
'USER': 'admin',
'PASSWORD': 'summer',
'HOST': '10.1.1.244',
'PORT': '1521',
},
pycharm怎么导入django工程
1. 下载安装
这是PyCharm的下载页面:
下载了一个pycharm-community-4.0.4.tar.gz的包,解压之后。进入pycharm-community-4.0.4目录。
$ tar zxf pycharm-community-4.0.4.tar.gz
$ cd pycharm-community-4.0.4/bin
$ ./pycharm.sh
然后就是安装界面,反正按提示的步骤安装便是了。
在运行完之后,就显示出PyCharm的主界面:
这就说明创建成功了!
2. 创建工程
上面对话框里的“Create New Project”就开始创建工程了。
然后,在上面这个页面上选择项目所在的目录,以及Python解析器。注意目录的名称,它将会是工程的名称。
然后可以点右键新建文件。[New] -- [Python File] 创建文件。
输入文件名,点“OK”就行了。
3. 配置调试Django
我们来创建一个Django工程并用PyCharm来开发。
首先,我们用终端新建一个目录,并进入这个目录,并用django-admin.py创建目录(别想着让PyCharm为你建)。
$ cd /home/hevake_lcj/Workspace/PycharmProjects/Django
$ django-admin.py startproject mysite
然后在PyCharm中点击菜单[File] -- [New Project...],弹出对话框。
注意目录就是mysite所在的目录。
PyCharm发现里面有文件,问是否要加入工程,选Yes。
然后,我们新建的项目里面就有了。
关键的问题是调试。
由于Django工程的运行是这样的:
$ python3 ./manage.py runserver
所以这里要对其进行配置。
选择菜单 [Run] -- [Edit Configurations...] 弹出如下对话框。
点左上角的 + 号,添加一个Debug配置,并如下配置:
Name: 这个随便起个名。Script: 一定得是manage.py,下面那项应该是runserver。
好!配置完成后,我们来试着Debug一下。
点击菜单[Run] -- [Run "debug-runserver"],可以看到:
说明服务器是运行起来了的。
点击访问一下:,如下:
说明OK了。
如何在服务器上部署Django项目并使其在后台一直运行
前几天老师让我把一个Django项目(爬虫网页)放到校园内网上,但是我想先用自己的服务器来尝试一下。之前刚好有在Digital Ocean上买过服务器用来运行ss脚本,平时服务器一直放着没啥用,所以就拿它来试验一下。
废话不多说,第一步通过WinSCP软件把Django文件传到服务器上。
在服务器中安装Django需要的环境和我所需要的Python第三方库。
以上所有步骤完成后,还需要进行一步操作,这是我经历的一个 坑 。 打开Django文件目录中的 settings.py ,把 ALLOWED_HOSTS=[] 改为 ALLOWED_HOSTS=["*"] 。
在服务器中打开到 manage.py 所在的目录,输入命令:
python3 manage.py runserver 0.0.0.0:8000
然后按下回车,在浏览器中输入: 该服务器IP地址:8000 ,大功告成!
Attention:
1. python3 不是特定的,是根据你的Django项目所需要的环境指定的。
2. 8000 是端口号,可以修改。
如果想要Django项目一直运行,关闭终端后还在运行,即需要运行如下命令, nohup command , command 即位上文所说的 python3 manage.py runserver 0.0.0.0:8000 。
pycharm虚拟环境中的项目如何在别的电脑上运行?
python的虚拟环境venv是不需要复制过去的。它是属于你自己的一个环境设置。路径或者其它的配置可能都不一样。
代码复制到其它电脑上的话需要在另外一台机器上重新配置python环境。
通常我在写项目的时候会把用到的依赖库比如Django,pillow,django-ckeditor等等写到一个叫requirements.txt的文件里面。而文件就放在项目根目录下。这样的话代码移植到别的电脑上或者部署的时候就可以根据requirements.txt文件内容安装依赖。
移植到别的电脑或部署服务器的时候直接重新创建venv然后在该环境下执行pip install -r requirements.txt就可以了
希望能帮到你。还有问题可以回复追问。谢谢
pycharm django怎么打开
下载Django包,解压缩。
CMD 进入解压路径下。
执行:python setup.py install
增加环境变量:
C:\Python27\Scripts
结语:以上就是恰卡编程网为大家整理的关于如何打开别人的django项目的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~
相关文章
本站已关闭游客评论,请登录或者注册后再评论吧~