FAQ: Using Django

Why do I get an error about importing DJANGO_SETTINGS_MODULE?

确保:

  • 环境变量DJANGO_SETTINGS_MODULE设置为完全限定的Python模块(即“mysite.settings”)。
  • 所述模块在sys.pathimport mysite.settings应该工作)。
  • 模块不包含语法错误(当然)。

我不能忍受你的模板语言。 Do I have to use it?

我们碰巧认为我们的模板引擎是最好的东西,因为大块的培根,但我们认识到选择一个模板语言运行接近宗教。 没有什么关于Django需要使用模板语言,所以如果你附加到Jinja2,Mako或任何,可以随意使用那些。

Do I have to use your model/database layer?

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

一个例外是:如果您使用不同的数据库库,您将无法使用Django的自动生成的管理网站。 该应用程序耦合到Django数据库层。

How do I use image and file fields?

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

  1. 在设置文件中,您需要将MEDIA_ROOT定义为您希望Django存储上传文件的目录的完整路径。 (对于性能,这些文件不存储在数据库中。) MEDIA_URL定义为该目录的基本公开网址。 请确保此目录可由Web服务器的用户帐户写入。
  2. FileFieldImageField添加到模型中,定义upload_to选项以指定MEDIA_ROOT的子目录上传文件。
  3. 所有将存储在数据库中的是文件的路径(相对于MEDIA_ROOT)。 您最有可能想使用Django提供的方便的url属性。 For example, if your ImageField is called mug_shot, you can get the absolute path to your image in a template with {{ object.mug_shot.url }}.

How do I make a variable available to all my templates?

有时你的模板只需要一样的东西。 一个常见的例子是动态生成的菜单。 乍一看,简单地向模板上下文添加一个公共字典似乎是合乎逻辑的。

正确的解决方案是使用RequestContext 有关如何执行此操作的详细信息,请参见:Using RequestContext