Django - 一个网页上的多个应用程序?

yoK*_*oK0 11 python django

我在网上看了一遍,没有找到答案.我是Django的新手.我已经完成了官方教程并阅读了更多内容,但不幸的是,所有这些都只专注于创建一个应用程序.由于将页面作为单个应用程序并不常见,我想请一些Django大师解释我如何在网页上拥有多个应用程序.假设我去了mysite.com,我看到一个民意调查应用程序显示民意调查,图库应用程序显示一些图片,新闻应用程序显示最新新闻等,所有访问都通过一个网址.我知道我在模板中进行显示,但显然需要访问数据.我是否创建视图以返回多个视图?任何建议,链接和例子非常感谢.

Pau*_*tte 11

django应用程序并不真正映射到页面,而是映射到函数.应用程序将用于"民意调查"应用程序或"新闻"应用程序.每个应用程序应该有一个主要模型,可能有几个支持.就像新闻应用程序可以有文章的模型,与作者和媒体等支持模型.

如果要显示多个,则需要集成应用程序.一种方法是在您的民意调查和新闻应用旁边设置一个"项目"应用程序.项目应用程序适用于您的特定网站 - 它是特定于此应用程序的逻辑.它会有你的主urls.py,你的基本模板,类似的东西.如果您需要在一个页面中显示来自多个应用程序的信息,则必须具有从多个应用程序返回信息的视图.例如,假设您有一个返回新闻文章信息的视图,以及一个返回轮询信息的视图.您可以在项目应用程序中拥有一个调用这两个视图函数的视图,并将返回的数据粘贴到另一个模板中,该模板具有两个视图功能.

在此特定示例中,您还可以设置您的民意调查应用程序,以便可以嵌入其返回信息,然后将信息嵌入到新闻文章中.在这种情况下,您根本不必将应用程序链接在一起作为开发的一部分,可以根据需要在内容创建端完成.


AAA*_*AAA 10

您可以执行类似的操作以在页面上显示应用程序数据.

views.py

def home(request, template='path/to/template'): 
     context = {
        'polls': Poll.objects.all(),
        'galleries': Gallery.objects.all(),
    }
    return (request, template, context)
Run Code Online (Sandbox Code Playgroud)

在模板中:

{% for poll in polls %}
{{ poll }}
{% endfor %}
{% for gallery in galleries %}
{{ gallery }}
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

urls.py

url('home/$', app.views.home, name='home')
Run Code Online (Sandbox Code Playgroud)

但是如果你想在侧边栏上显示信息一直显示,那么你就想使用模板标签.