【问题标题】:How to correctly render multiple apps on the main page如何在主页上正确呈现多个应用程序
【发布时间】:2018-02-08 08:08:04
【问题描述】:

所以我目前正在学习使用 Django,我想知道如何正确拆分部分功能,同时仍将其显示在主页上。

例如,我想要主索引页面上的标题 + 导航、日历和最近的博客文章。
例如,在查看文章页面上,我会有标题 + 导航、日历和带有评论部分的单篇文章。

现在阅读教程,如果我理解正确,我会将功能拆分为标题应用程序、日历应用程序和博客应用程序本身,同时将它们与核心应用程序粘合在一起。

但我不明白的是如何在主应用程序中呈现应用程序/其他视图。我发现的所有方法都只指定模板本身或看起来很老套,所以显然这似乎不是常用的方法。

【问题讨论】:

    标签: django templates web view render


    【解决方案1】:

    所以这里有多个视图:

    1.你想展示的视图

    2. 将呈现页面的视图,显示所有视图(我们称之为“主视图”。

    第一步是将所有其他视图/模型导入到主视图所在的views.py文件中。

    from blog.models import Post
    from calendar.models import Calendar
    

    现在您可以编辑主视图以访问这些数据。例如:

    class Mainview(TemplateView):
        template_name = 'app/homepage.html'
    
        def get_context_data(self, **kwargs):
            #This will only show the latest post
            data['posts'] = Post.objects.all().order_by('-id')[:1]
            data['calendar'] = Calendar.objects.all()
            return data
    

    现在您可以使用 {{ }} 标签访问模板中其他应用程序的数据,例如 - 您可以执行以下操作:

    {% for post object in post %}
       {{ post.title }}
       {{ post.content}}
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      • 2021-07-21
      • 2019-01-11
      • 2019-12-29
      • 1970-01-01
      相关资源
      最近更新 更多