对 django 应用程序的测试会产生“render_to_string”的模板未找到错误当通过 Fabric 执行时

发布于 2024-12-20 17:08:28 字数 692 浏览 0 评论 0原文

当我使用 Fabric 在远程服务器上运行测试时,出现错误:

File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: index.html

我正在尝试使用“render_to_string()”将模板呈现为字符串 如果我登录到服务器并手动运行测试(python manage.py test app),它就可以正常工作。在运行 Fabric 时会发生此错误。

这是我的面料代码:

from __future__ import with_statement
from fabric.api import local
import os
from fabric.api import *

env.hosts = ['server.com']
production_project_path = '/path/to/production/app/'

def run_remote_test():
    run("python %s/manage.py test app"%production_project_path)

我错过了什么吗? 注意:我没有使用虚拟环境

When I run tests on my remote server using fabric, I get an error saying:

File "/usr/local/lib/python2.7/dist-packages/django/template/loader.py", line 138, in find_template
raise TemplateDoesNotExist(name)
TemplateDoesNotExist: index.html

I am trying to render the template as a string using "render_to_string()"
If I login to the server and run tests manually (python manage.py test app), it is working properly. This error occurs while running through fabric.

Here is my fabric code:

from __future__ import with_statement
from fabric.api import local
import os
from fabric.api import *

env.hosts = ['server.com']
production_project_path = '/path/to/production/app/'

def run_remote_test():
    run("python %s/manage.py test app"%production_project_path)

Did I miss something?
Note: I am not using virtual environment

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮生未歇 2024-12-27 17:08:28

那么我们就正式宣布此事吧。 ;)

在这种情况下,问题在于,manage.py 期望从项目目录运行,因此将上述内容重写为:

from __future__ import with_statement
from fabric.api import local
import os
from fabric.api import *

env.hosts = ['server.com']
production_project_path = '/path/to/production/app/'

def run_remote_test():
    with cd(production_project_path):
        run("python manage.py test app")

已解决该问题。

Then let's make this official. ;)

In this case, the problem was the fact that manage.py expects to be ran from the project directory, so rewriting the abovestanding as:

from __future__ import with_statement
from fabric.api import local
import os
from fabric.api import *

env.hosts = ['server.com']
production_project_path = '/path/to/production/app/'

def run_remote_test():
    with cd(production_project_path):
        run("python manage.py test app")

has fixed the issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文