Django中的未知语句类型

时间:2014-04-07 16:46:23

标签: python django

我是Python新手,我正在研究这段代码。我试图找出像PROJECT_ROOT这样的术语含义是什么我怀疑它就像一个事件。我已经在GUI中导入了os,但是当我通过键入help(os)来搜索该术语时,我没有在那里找到它

#Django settings for pysec project
import os

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

DEBUG = True
TEMPLATE_DEBUG = DEBUG

ADMINS = (
    # ('Your Name', 'your_email@example.com'),
)

MANAGERS = ADMINS

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '',                      # Or path to database file if using sqlite3.
        # The following settings are not used with sqlite3:
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
        'PORT': '',                      # Set to empty string for default.
    }
}

我从python网站和文档中搜索了很多教程,但我没有找到这些命令的含义。

我在搜索过的其他单词中也喜欢ADMINS和DEBUG

4 个答案:

答案 0 :(得分:1)

您的所有问题都在文档available here on the Django site中得到了解答。你应该在继续之前阅读Django教程,否则你会被困在Django的每一个功能上!

答案 1 :(得分:1)

os是Python标准库中的一个模块,请参阅documentationos.path是一个子模块,请参阅documentation

__file__是当前文件的路径(此代码所在的Python文件,可能是"./settings.py"左右)。

os.path.dirname获取路径并返回其中的目录部分(路径减去settings.py)。

os.path.abspath将路径转换为绝对路径。

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))进行设置" PROJECT_ROOT"等于settings.py所在目录的绝对路径。

settings.py包含完全正常的Python代码,在Django启动时执行,Django从中导入变量,以及如何配置Django。

答案 2 :(得分:1)

这种代码可能看起来令人生畏,但这样的代码的唯一目的是定义一些项目范围的常量,您可以随意使用它们。如果你愿意,你可以设置你自己的常量,什么都不会破坏,它们就会被使用,就像这样:

import os

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

DEBUG = True
TEMPLATE_DEBUG = DEBUG

MY_VARIABLE = "nonsense"

唯一的一点就是在其他地方(假设上面的文件名为settings.py)你可以这样写:

from settings import PROJECT_ROOT

import settings
print settings.PROJECT_ROOT

具体来说,PROJECT_ROOT是当前文件的路径,DEBUG实际上只是设置为True的布尔值,TEMPLATE_DEBUG也设置为相同的布尔值( True),依此类推。

这些常量的定义很简单,复杂的部分是Django在使用它们时实际对这些常量做的事情。如果你想了解这一点,你必须深入研究一些django源代码。

答案 3 :(得分:0)

PROJECT_ROOT是Django魔法,通常你不需要担心它。您可以看到Django框架代码从当前Python源文件的路径动态推断它。

我认为一旦部署此代码,它就会用于查找自己的资源(例如静态图像)。

请参阅https://stackoverflow.com/a/16413955/705086