文件由Django服务器发现,但不是由Apache / mod_wsgi发现

时间:2014-06-09 17:47:19

标签: linux django apache

我有一个Django应用程序,当运行" manage.py runserver 0.0.0.0:80"工作正常,但是当由Apache2服务器运行时告诉我"没有这样的文件或目录"

我认为告诉Apache要查看哪条路径有什么关系,但我已经完成了显而易见的事情:

WSGIScriptAlias / /home/mywebsite/myproject/wsgi.py
WSGIPythonPath /home/mywebsite
<Directory /home/mywebsite/myapp>
    <Files wsgi.py>
    Order deny,allow
    Require all granted
    </Files>
</Directory>
<Directory /home/mywebsite> //I thought this might give it access to the root folder
    Order deny,allow
    Require all granted
</Directory>

请注意我的文件位于项目的根目录中,位于manage.py旁边。该应用程序能够显示其首页,但由于上述文件错误,其中一个按钮触发的ajax失败。

我一定不知道如何指定文件路径

访问该文件的代码就是:

with open('demo.txt') as fp:
   etc...

重申一下,当我运行Django服务器时,它工作正常。 Apache运行主页就好了,只有在查找此文件时才会失败。

我需要改变什么?

2 个答案:

答案 0 :(得分:1)

尝试使用文件的完整路径,或使用os模块获取相对路径。

答案 1 :(得分:1)

一种方法是在设置文件中设置项目路径:(如果它在项目根目录中)

BASE_DIR = os.path.dirname(os.path.dirname(__file__))

from django.conf import settings
with open(os.path.join(settings.BASE_DIR, 'demo.txt')) as fp:
 ...

它将在您项目的所有安装中保持一致,您可以在本地调试BASE_DIR。