“Django/docs/2.2.x/faq/usage”的版本间差异

来自菜鸟教程
Django/docs/2.2.x/faq/usage
跳转至:导航、​搜索
(autoload)
 
(Page commit)
 
第1行: 第1行:
 +
{{DISPLAYTITLE:常见问题:使用 Django — Django 文档}}
 
<div id="faq-using-django" class="section">
 
<div id="faq-using-django" class="section">
  
第5行: 第6行:
 
<div id="why-do-i-get-an-error-about-importing-django-settings-module" class="section">
 
<div id="why-do-i-get-an-error-about-importing-django-settings-module" class="section">
  
== 为什么我在导入 DJANGO_SETTINGS_MODULE 时收到错误提示? ==
+
== 为什么我在导入 :envvar:`DJANGO_SETTINGS_MODULE` 时收到错误提示? ==
  
 
保证:
 
保证:
  
* 环境变量 DJANGO_SETTINGS_MODULE 被设置成一个完全合格的 Python 模块(即 &quot;mysite.settings&quot;)。
+
* 环境变量 DJANGO_SETTINGS_MODULE 设置为完全限定的 Python 模块(即 “mysite.settings”)。
* 所述模块在 <code>sys.path</code> (需引入 <code>import mysite.settings</code> 才会工作)
+
* 所述模块在 <code>sys.path</code> 上(<code>import mysite.settings</code> 应该可以工作)。
* 模块未包含语法错误(当然啦)。
+
* 该模块不包含语法错误(当然)。
  
  
第17行: 第18行:
 
<div id="i-can-t-stand-your-template-language-do-i-have-to-use-it" class="section">
 
<div id="i-can-t-stand-your-template-language-do-i-have-to-use-it" class="section">
  
== 我不喜欢 Django 的模板语言,能不能不使用它? ==
+
== 我受不了你的模板语言。 我必须使用它吗? ==
  
我们认为我们的的模板引擎是最好的,但是我们意识到选择一个模板语言和信仰宗教相似。Django 没有什么必须的模板语言,如果你愿意使用 Jinja2、Mako 或其他的,请随意使用。
+
我们碰巧认为我们的模板引擎是自大块培根以来最好的东西,但我们认识到选择模板语言与宗教接近。 Django 不需要使用模板语言,所以如果你喜欢 Jinja2、Mako 或其他任何东西,请随意使用它们。
  
  
第27行: 第28行:
 
== 我是否必须使用你的模型/数据库层? ==
 
== 我是否必须使用你的模型/数据库层? ==
  
不。就像模板系统,模型/数据库层是与框架的其余部分分离的。
+
不。 就像模板系统一样,模型/数据库层与框架的其余部分分离。
  
唯一例外的是:如果你使用其他的数据库库,你没办法使用 Django 自动生成的后台界面。这个应用是和 Django 数据库层耦合的。
+
一个例外是:如果您使用不同的数据库库,您将无法使用 Django 自动生成的管理站点。 该应用程序与 Django 数据库层耦合。
  
  
第37行: 第38行:
 
== 我要怎么使用图片和文件字段? ==
 
== 我要怎么使用图片和文件字段? ==
  
在模型中使用 [[../../ref/models/fields#django.db.models|<code>FileField</code>]] 或 [[../../ref/models/fields#django.db.models|<code>ImageField</code>]] ,你还需要完成如下步骤:
+
在模型中使用 [[../../ref/models/fields#django.db.models|FileField]] 或 [[../../ref/models/fields#django.db.models|ImageField]] 需要几个步骤:
  
# 在你的 setting 文件中,你需要定义:setting: MEDIA_ROOT 作为 Django 存储上传文件目录的完整路径。(为了提高性能,这些文件不会储存在数据库中)定义: setting: MEDIA_URL 作为该目录的基本公共 URL, 确保该目录能够被 Web 服务器的账户写入。
+
# 在您的设置文件中,您需要将 [[#id1|:setting:`MEDIA_ROOT`]] 定义为您希望 Django 存储上传文件的目录的完整路径。 (为了性能,这些文件不存储在数据库中。)将 [[#id3|:setting:`MEDIA_URL`]] 定义为该目录的基本公共 URL。 确保该目录可由 Web 服务器的用户帐户写入。
# 在你的模型中添加 [[../../ref/models/fields#django.db.models|<code>FileField</code>]] 或者 [[../../ref/models/fields#django.db.models|<code>ImageField</code>]] ,可以通过定义:attr:~django.db.models.FileField.upload_to 在 [[../../ref/settings#std-setting-MEDIA_ROOT|<code>MEDIA_ROOT</code>]] 中明确一个子目录用来上传文件。
+
# [[../../ref/models/fields#django.db.models|FileField]] [[../../ref/models/fields#django.db.models|ImageField]] 添加到您的模型中,定义 [[../../ref/models/fields#django.db.models.FileField|upload_to]] 选项以指定要使用的 [[#id5|:setting:`MEDIA_ROOT`]] 的子目录对于上传的文件。
# 所有将被储存在数据库中的文件路径相同(相对于:setting: MEDIA_ROOT`)。你很想用由 Django 提供的:attr:~django.db.models.fields.files.FieldFile.url,比如, 如果:class:~django.db.models.ImageField 被叫做 <code>mug_shot</code>, 你就可以得到 <code>{{ object.mug_shot.url }}</code> 图片模板的绝对路径。
+
# 所有将存储在您的数据库中的是文件的路径(相对于 [[#id7|:setting:`MEDIA_ROOT`]])。 您很可能希望使用 Django 提供的便利 [[../../ref/models/fields#django.db.models.fields.files.FieldFile|url]] 属性。 例如,如果您的 [[../../ref/models/fields#django.db.models|ImageField]] 被称为 <code>mug_shot</code>,您可以使用 <code>{{ object.mug_shot.url }}</code> 在模板中获取图像的绝对路径。
  
  
第49行: 第50行:
 
== 我如何让一个变量可用于我的所有模板之中? ==
 
== 我如何让一个变量可用于我的所有模板之中? ==
  
有时候你的模板会需要相同的东西。一个常见的例子是动态生成的菜单。乍一看,在模板上下文中添加一个通用字典似乎是合乎逻辑的。
+
有时,您的模板都需要相同的东西。 一个常见的例子是动态生成的菜单。 乍一看,简单地向模板上下文添加一个通用字典似乎是合乎逻辑的。
  
正确的解决方案是使用&quot;RequestContext”。关于如何使用它请查看: [[../../ref/templates/api#subclassing-context-requestcontext|<span class="std std-ref">Using RequestContext</span>]]。
+
正确的解决方案是使用 <code>RequestContext</code>。 有关如何执行此操作的详细信息,请参见:[[../../ref/templates/api#subclassing-context-requestcontext|Using RequestContext]]。
  
  
第57行: 第58行:
  
 
</div>
 
</div>
 +
<div class="clearer">
  
[[Category:Django 2.2.x 中文文档]]
+
 
 +
 
 +
</div>
 +
 
 +
[[Category:Django 2.2.x 文档]]

2021年10月31日 (日) 04:04的最新版本

FAQ: 使用Django

为什么我在导入 :envvar:`DJANGO_SETTINGS_MODULE` 时收到错误提示?

保证:

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


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

我们碰巧认为我们的模板引擎是自大块培根以来最好的东西,但我们认识到选择模板语言与宗教接近。 Django 不需要使用模板语言,所以如果你喜欢 Jinja2、Mako 或其他任何东西,请随意使用它们。


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

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

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


我要怎么使用图片和文件字段?

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

  1. 在您的设置文件中,您需要将 :setting:`MEDIA_ROOT` 定义为您希望 Django 存储上传文件的目录的完整路径。 (为了性能,这些文件不存储在数据库中。)将 :setting:`MEDIA_URL` 定义为该目录的基本公共 URL。 确保该目录可由 Web 服务器的用户帐户写入。
  2. FileFieldImageField 添加到您的模型中,定义 upload_to 选项以指定要使用的 :setting:`MEDIA_ROOT` 的子目录对于上传的文件。
  3. 所有将存储在您的数据库中的是文件的路径(相对于 :setting:`MEDIA_ROOT`)。 您很可能希望使用 Django 提供的便利 url 属性。 例如,如果您的 ImageField 被称为 mug_shot,您可以使用 模板:Object.mug shot.url 在模板中获取图像的绝对路径。


我如何让一个变量可用于我的所有模板之中?

有时,您的模板都需要相同的东西。 一个常见的例子是动态生成的菜单。 乍一看,简单地向模板上下文添加一个通用字典似乎是合乎逻辑的。

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