Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django中的当前目录(os.getcwd)如何确定?_Python_Django_Webfaction - Fatal编程技术网

Python Django中的当前目录(os.getcwd)如何确定?

Python Django中的当前目录(os.getcwd)如何确定?,python,django,webfaction,Python,Django,Webfaction,我在Python2.7上使用Django 1.7,并注意到在我的生产主机(Web派系)和开发机器(mac os x)上有一个奇怪的行为 在我的开发机器上,当我通过cmds获取当前工作目录时 import os dirspot = os.getcwd() print dirspot 我得到manage.py可执行文件的位置。 当我在主机(Web派系)上执行此操作时,我会得到不同的响应,这取决于Django站点是否正在运行,而不是使用Django shell 因此,我的项目(和manage.py)

我在Python2.7上使用Django 1.7,并注意到在我的生产主机(Web派系)和开发机器(mac os x)上有一个奇怪的行为

在我的开发机器上,当我通过cmds获取当前工作目录时

import os
dirspot = os.getcwd()
print dirspot
我得到manage.py可执行文件的位置。 当我在主机(Web派系)上执行此操作时,我会得到不同的响应,这取决于Django站点是否正在运行,而不是使用Django shell

因此,我的项目(和manage.py)位于:

/home/ross/webapps/djangoarea/myproj
运行

python manage.py shell
然后我得到上面的os.getcwd()

但是如果我将相同的命令放入views.py并运行我的项目,我会

/home/ross/
我猜这可能与运行django的apache2和wsgi有关,而不是与调用它的manage.py有关。有人知道如何保持一致吗

提前感谢,,
Ross.

不确定您到底想做什么,但正如您所发现的,
os.getcwd()
与文件或脚本的位置无关,它与您执行脚本的位置有关。由于许多原因,这是不可靠的——例如,在主机上,您的web进程作为一个与脚本所有者完全不同的用户运行。如果要获取与文件相关的内容,可能需要使用
os.path.abspath(os.path.dirname(\uu file\uuu))
os.path.realpath(path)


以防万一有人发现它有用。 您可以查看您的工作目录,或者使用请求在django中直接打印工作目录。这种行为似乎能满足rest框架的请求,尽管我不确定它是否能满足常规django请求

def some_view(self, request, *args, **kwargs):
    request.META.get('pwd')

我希望这对某人有用,谢谢你的建议。在Django中,“script”是manage.py可执行文件,因此我认为应该有一个一致的结果来指示它的位置。然而,毫无疑问,读了abspath和realpath,看起来不错,所以使用了它,效果很好。有趣的是,在manage.py shell中,需要引用下划线文件引用,否则它将不起作用。(我明白了,因为下划线被删除了,所以不能在这里键入):)
def some_view(self, request, *args, **kwargs):
    request.META.get('pwd')