“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 | + | * 环境变量 DJANGO_SETTINGS_MODULE 设置为完全限定的 Python 模块(即 “mysite.settings”)。 |
− | * 所述模块在 <code>sys.path</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 不需要使用模板语言,所以如果你喜欢 Jinja2、Mako 或其他任何东西,请随意使用它们。 | |
第27行: | 第28行: | ||
== 我是否必须使用你的模型/数据库层? == | == 我是否必须使用你的模型/数据库层? == | ||
− | + | 不。 就像模板系统一样,模型/数据库层与框架的其余部分分离。 | |
− | + | 一个例外是:如果您使用不同的数据库库,您将无法使用 Django 自动生成的管理站点。 该应用程序与 Django 数据库层耦合。 | |
第37行: | 第38行: | ||
== 我要怎么使用图片和文件字段? == | == 我要怎么使用图片和文件字段? == | ||
− | 在模型中使用 [[../../ref/models/fields#django.db.models| | + | 在模型中使用 [[../../ref/models/fields#django.db.models|FileField]] 或 [[../../ref/models/fields#django.db.models|ImageField]] 需要几个步骤: |
− | # | + | # 在您的设置文件中,您需要将 [[#id1|:setting:`MEDIA_ROOT`]] 定义为您希望 Django 存储上传文件的目录的完整路径。 (为了性能,这些文件不存储在数据库中。)将 [[#id3|:setting:`MEDIA_URL`]] 定义为该目录的基本公共 URL。 确保该目录可由 Web 服务器的用户帐户写入。 |
− | # | + | # 将 [[../../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`]] 的子目录对于上传的文件。 |
− | # | + | # 所有将存储在您的数据库中的是文件的路径(相对于 [[#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行: | ||
== 我如何让一个变量可用于我的所有模板之中? == | == 我如何让一个变量可用于我的所有模板之中? == | ||
− | + | 有时,您的模板都需要相同的东西。 一个常见的例子是动态生成的菜单。 乍一看,简单地向模板上下文添加一个通用字典似乎是合乎逻辑的。 | |
− | 正确的解决方案是使用 | + | 正确的解决方案是使用 <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 数据库层耦合。
我要怎么使用图片和文件字段?
在模型中使用 FileField 或 ImageField 需要几个步骤:
- 在您的设置文件中,您需要将 :setting:`MEDIA_ROOT` 定义为您希望 Django 存储上传文件的目录的完整路径。 (为了性能,这些文件不存储在数据库中。)将 :setting:`MEDIA_URL` 定义为该目录的基本公共 URL。 确保该目录可由 Web 服务器的用户帐户写入。
- 将 FileField 或 ImageField 添加到您的模型中,定义 upload_to 选项以指定要使用的 :setting:`MEDIA_ROOT` 的子目录对于上传的文件。
- 所有将存储在您的数据库中的是文件的路径(相对于 :setting:`MEDIA_ROOT`)。 您很可能希望使用 Django 提供的便利 url 属性。 例如,如果您的 ImageField 被称为
mug_shot
,您可以使用模板:Object.mug shot.url
在模板中获取图像的绝对路径。
我如何让一个变量可用于我的所有模板之中?
有时,您的模板都需要相同的东西。 一个常见的例子是动态生成的菜单。 乍一看,简单地向模板上下文添加一个通用字典似乎是合乎逻辑的。
正确的解决方案是使用 RequestContext
。 有关如何执行此操作的详细信息,请参见:Using RequestContext。