常见问题:使用 Django

为什么我会收到关于导入 DJANGO_SETTINGS_MODULE 的错误?

请确保

  • 环境变量 DJANGO_SETTINGS_MODULE 设置为一个完全限定的 Python 模块(例如 mysite.settings)。

  • 该模块位于 sys.path 上(import mysite.settings 应该可以工作)。

  • 该模块不包含语法错误。

我受不了你的模板语言。我必须使用它吗?

我们认为我们的模板引擎是继厚切培根之后最好的东西,但我们也认识到选择模板语言与宗教信仰息息相关。Django 没有强制要求使用模板语言,所以如果你钟爱 Jinja2、Mako 或其他模板语言,请随意使用它们。

我必须使用你的模型/数据库层吗?

不用。就像模板系统一样,模型/数据库层与框架的其余部分是解耦的。

唯一例外是:如果你使用不同的数据库库,你就无法使用 Django 自动生成的管理站点。该应用程序与 Django 数据库层耦合。

如何使用图像和文件字段?

在模型中使用 FileFieldImageField 需要几个步骤

  1. 在你的 settings 文件中,你需要将 MEDIA_ROOT 定义为 Django 存储上传文件的目录的完整路径。(出于性能考虑,这些文件不会存储在数据库中。)将 MEDIA_URL 定义为该目录的基本公共 URL。确保此目录对 Web 服务器的用户帐户可写。

  2. FileFieldImageField 添加到你的模型中,定义 upload_to 选项以指定要用于上传文件的 MEDIA_ROOT 的子目录。

  3. 存储在数据库中的只是文件路径(相对于 MEDIA_ROOT)。你很可能希望使用 Django 提供的便捷 url 属性。例如,如果你的 ImageField 称为 mug_shot,你可以在模板中使用 {{ object.mug_shot.url }} 获取图像的绝对路径。

如何使变量对所有模板可用?

有时你的所有模板都需要相同的东西。一个常见的例子是动态生成的菜单。乍一看,似乎在模板上下文中添加一个公共字典是合乎逻辑的。

在 Django 中执行此操作的最佳方法是使用 RequestContext。有关如何执行此操作的详细信息,请参阅此处:使用 RequestContext

返回顶部