常见问题:使用 Django¶
为什么我会收到关于导入 DJANGO_SETTINGS_MODULE
的错误?¶
请确保
环境变量
DJANGO_SETTINGS_MODULE
设置为一个完全限定的 Python 模块(例如mysite.settings
)。该模块位于
sys.path
上(import mysite.settings
应该可以工作)。该模块不包含语法错误。
我受不了你的模板语言。我必须使用它吗?¶
我们认为我们的模板引擎是继厚切培根之后最好的东西,但我们也认识到选择模板语言与宗教信仰息息相关。Django 没有强制要求使用模板语言,所以如果你钟爱 Jinja2、Mako 或其他模板语言,请随意使用它们。
我必须使用你的模型/数据库层吗?¶
不用。就像模板系统一样,模型/数据库层与框架的其余部分是解耦的。
唯一例外是:如果你使用不同的数据库库,你就无法使用 Django 自动生成的管理站点。该应用程序与 Django 数据库层耦合。
如何使用图像和文件字段?¶
在模型中使用 FileField
或 ImageField
需要几个步骤
在你的 settings 文件中,你需要将
MEDIA_ROOT
定义为 Django 存储上传文件的目录的完整路径。(出于性能考虑,这些文件不会存储在数据库中。)将MEDIA_URL
定义为该目录的基本公共 URL。确保此目录对 Web 服务器的用户帐户可写。将
FileField
或ImageField
添加到你的模型中,定义upload_to
选项以指定要用于上传文件的MEDIA_ROOT
的子目录。存储在数据库中的只是文件路径(相对于
MEDIA_ROOT
)。你很可能希望使用 Django 提供的便捷url
属性。例如,如果你的ImageField
称为mug_shot
,你可以在模板中使用{{ object.mug_shot.url }}
获取图像的绝对路径。
如何使变量对所有模板可用?¶
有时你的所有模板都需要相同的东西。一个常见的例子是动态生成的菜单。乍一看,似乎在模板上下文中添加一个公共字典是合乎逻辑的。
在 Django 中执行此操作的最佳方法是使用 RequestContext
。有关如何执行此操作的详细信息,请参阅此处:使用 RequestContext。