gpt4 book ai didi

django - Django 站点设置站点配置变量的最佳实践?

转载 作者:行者123 更新时间:2023-12-04 03:34:13 25 4
gpt4 key购买 nike

全部!我正在写一个 Django 博客网站。

我是 Django 的新手。由于 Django 有松耦合的理念,我相信在使用他们的框架时最好遵循他们的信念。

所以我在这里遇到了一个困境:

我想为我的博客设置一些变量,比如博客标题、口号和我写的每个博客主页上摘要的最大长度,以及我应该在每页主页上显示多少个博客摘要。

我可以通过在我的 Django 项目中创建一个新应用程序,并为我的站点的配置变量创建模型,然后从其他应用程序读取这些变量来做到这一点,但这种做法显然打破了松散耦合的理念。

我能想到的唯一解决方法是在我的站点 .wsgi 文件中设置环境变量(我使用 Apache 和 mod_wsgi 来提供 Python 脚本)但我认为弄乱环境变量还不够“干净”。

谁能建议我更好的解决方案?

最佳答案

您可以做的第一件事是在项目的设置模块中设置这些变量,许多应用程序都会这样做:

# settings
BLOG_TITLE = 'My title'

然后,一个好的做法是提供设置默认值,因此您的应用程序应该有一个设置文件
# blog/settings.py
from django.conf import settings
BLOG_TITLE = getattr(settings, 'BLOG_TITLE', 'MY default title')

# Then wherever, views or context processor
from blog import settings # See how we're not importing project's settings

title = settings.BLOG_TITLE

另一种选择是创建一个包含所有这些变量的“博客”模型,这可能会邀请您让您的应用程序根据 Django sites 绑定(bind)一个博客。
from django.contrib.sites.models import Site
class Blog(models.Model):
site = models.OneToOneField(Site) # Tied up to a Django site
title = models.CharField(max_length=256)

现在您可以从管理界面更改这些值并在 View 或上下文处理器中使用它们
site = Site.objects.get_current() # Installed Django Sites app and middleware
blog = site.blog
print blog.title

关于django - Django 站点设置站点配置变量的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6421912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com