Django:如何在多个应用程序中构建/使用项目

2024-04-19 17:56:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经阅读了Django官方教程和其他许多问题stackoverflow.com网站,但我的问题似乎没有真正的答案,或者我就是不明白。不幸的是,我找不到一个以上应用程序的合适教程。在

我的问题是: Django项目通常由多个应用程序组成。我不明白这些应用程序是如何协同工作的。在

示例: 假设我们建立了一个新闻网站,这个新闻网站有博客文章、民意调查和评论区等,所以我认为创建一个名为polls的应用程序,另一个名为blog的应用程序和comments的应用程序。在

例如,当您浏览url.com/news/5时,您将看到id为5的博客文章。或者当您浏览到url.com/polls/2时,您将看到id为2的投票。一切正常。在

但是,现在我不想把它分开。我不想让网站的这些部分出现在一个单独的网页上(就像大多数网站一样)。这意味着如果我浏览到url.com/news/5,它不仅应该显示新闻,还应该显示民意调查(因为民意调查在主题上属于这个新闻页面),并在页面底部显示对该文章的评论。在

我如何构建它并将其“粘合”在一起?在

通常,当我浏览到url.com/news/5时,blog应用程序中定义的视图函数将运行并提供HttpResponse。然而,有了这个解决方案,我不能将民意调查和评论放在同一页上。我希望你明白我的问题所在。在

在一个网页上显示不同应用的“最佳实践”是什么?还是完全不同?在

我也很高兴,如果你能给我一个真实世界的例子或不错的教程,涵盖这个问题的链接。在


Tags: djangocomid应用程序url网页网站文章
1条回答
网友
1楼 · 发布于 2024-04-19 17:56:55

使用基于类的泛型视图并提供额外的上下文。以下是文档的链接:

https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-display/#adding-extra-context

下面是示例代码:

from django.views.generic import DetailView
from books.models import Publisher, Book
class PublisherDetail(DetailView):

    model = Publisher

    def get_context_data(self, **kwargs):
        # Call the base implementation first to get a context
        context = super(PublisherDetail, self).get_context_data(**kwargs)
        # Add in a QuerySet of all the books
        context['book_list'] = Book.objects.all()
        return context

如您所见,主模型是Publisher,使用get_context_data,您可以添加另一个context:context['book_list'] = Book.objects.all(),它还可以检索数据库中的所有书籍。你可以用这个组合多个模型。在

相关问题 更多 >