【发布时间】:2020-09-07 09:51:01
【问题描述】:
如何从另一个应用程序获取值并在 Django 项目的另一个应用程序中显示的模板中显示该值? 我有这个项目目录结构:-
-News-Scrape
- accounts
- education
- home
- news
- models.py(The value is present here)
- views.py
- templates
- static
- templates
- base.html(I want to display a value here which is present in the `news` app)
由于base.html 文件不在应用程序中,我如何在此页面中显示news 应用程序的数据库中的任何特定值。
这是models.py(来自新闻应用程序)文件:-
from django.db import models
class PageView(models.Model):
hits = models.IntegerField(default=0) #I need this value to be displayed in my `base.html` file
这是views.py(来自新闻应用程序)文件:-
def news_list(request, *args, **kwargs):
if(PageView.objects.count()<=0):
x=PageView.objects.create()
x.save()
else:
x=PageView.objects.all()[0]
x.hits=x.hits+1
x.save()
context={}
context = {
'object_list': queryset,
'page': x.hits
}
return render(request, 'news_list.html', context)
如果base.html 文件在news 应用程序内,我可以很容易地通过{{object.<id_label>}} 获取值,但是当base.html 文件存在于应用程序外时,这不起作用。
我是 Django 的初学者,很难找到实现这一目标的方法。
【问题讨论】:
-
你的 news_list.html 和 base.html 是什么样的?如果您从 news_list 扩展 base.html,从那里访问上下文应该不是问题。
-
我在
news_list.html中扩展base.html。因为我在base.html文件中有页眉和页脚,我想在base.html文件的页脚部分显示一个值 -
我认为你应该能够从 base.html 访问这个值。如果您想在您查看给用户的每个页面上显示此值,您必须确保
'page'在每个扩展base.html的模板的上下文中。最好的方法是使用自定义上下文处理器,如以下问题所示:stackoverflow.com/questions/21062560/… -
你必须在你的
views.py文件中导入PageView