【问题标题】:How to get values from another app from the database in Django?如何从Django中的数据库中获取另一个应用程序的值?
【发布时间】: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.&lt;id_label&gt;}} 获取值,但是当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

标签: python django


【解决方案1】:

新闻-刮

  • accounts
  • education
  • home
  • news
    • templates
      • news
        • base.html 或您的 html 文件
    • models.py
    • views.py

您可以为项目中的每个应用创建单独的模板文件夹

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-16
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多