如何在不创建视图的情况下在 djangoCMS 中使用模型 (DB) 数据?

How can I use model (DB) data in djangoCMS, without creating views?

我想我的问题很清楚了:

我有兴趣找出一些在不创建视图的情况下使用模型 (DB) 数据的方法。

我已经使用 djangoccms 创建了一个网站,现在我想开发一个小博客。

我知道 this project 但这并不像我需要的那么简单(对于我的目的来说它相当复杂)。

例如,首先,我想知道是否有可能创建一个基本模板,我将能够在其中直接从数据库中显示用户(他们的姓名)。

在 Django 中,您基本上不能在没有将数据放在那里的视图的情况下将数据从模型获取到模板。以上就是全部观点。

您不一定要创建 views.py 文件,因为可能还有其他机制可供您使用,例如 django CMS 的插件系统。

虽然我不明白你的问题与开发博客有什么联系。

你可以做的是创建一个 context processor,它本质上是一个函数,returns 一个字典,它被添加到 每个 请求上下文。

例如,我有一个模型可以提供整个网站的信息,例如社交链接、名称等。看一看;

from django.contrib.sites.models import get_current_site

from .models import SiteSettings


def site_settings(request):
    current_site = get_current_site(request)

    try:
        settings = SiteSettings.objects.get(site_id=current_site.id)

    except SiteSettings.MultipleObjectsReturned:
        settings = SiteSettings.objects.filter(
            site_id=current_site.id
        ).order_by('id')[0]

    except SiteSettings.DoesNotExist:
        return {
            'SITE_SITE_NAME': None,
            'SITE_SHORT_NAME': None,
        }

    # SiteSettings object exists, so assign the attributes you want, to context 
    # variables returned by the context processor for all views.
    data = {
        'SITE_SITE_NAME': settings.site_name,
        'SITE_SHORT_NAME': settings.short_name,
    }

    return data

因此,通过这样做,您可以在任何模板中使用 {{ SITE_SHORT_NAME }} 之类的东西,这显然使您在 table 中保存的任何信息都可以通过这些处理器之一获得。只需确保在使用模型时创建必要的 DoesNotExist 例外。