我认为我的问题非常明确:
我有兴趣找到一些使用模型(DB)数据而不创建视图的方法。
我已经使用djangocms创建了一个网站,现在我想开发一个小博客。
我知道this project但这并不像我需要的那样直截了当(这对我来说非常复杂)。
例如,首先,我想知道是否有可能创建一个基本模板,我可以直接从数据库中显示用户(他们的名字)。
答案 0 :(得分:2)
在Django中,基本上无法从模型中获取数据到模板而没有将其放在那里的视图。这就是整个观点。
您不一定要创建views.py
文件,因为可能有其他可以使用的机制,例如django CMS的插件系统。
我不明白你的问题与开发博客有什么联系。
答案 1 :(得分:1)
你可以做的是创建一个context processor,它本质上是一个返回字典&它已添加到每个请求上下文中。
例如,我有一个模型,它提供整个网站的信息,如社交链接,名称等。看看;
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 }}
之类的内容,这显然可以使您在表中保存的任何信息都通过其中一个处理器获得。在使用模型时,请确保创建必要的DoesNotExist
例外。