当前位置: 首页 > 知识库问答 >
问题:

在单个html页面上从多个django应用程序模型获取数据

孙永思
2023-03-14

我有一个名为Project_Name的项目和一个名为first_app的应用程序,里面有一些文章。我把这些文章标题显示在我的主页上,作为链接到应用程序页面上的文章。

因此,在127.0.0.1:8000/中,我有index.html。在这里我显示文章列表。然后,如果单击一篇文章,我将转到127.0.0.1:8000/first_app/1,例如显示第一篇文章。

下面是我的项目视图.py:

...
from first_app.models import Article

def home(request):
    latest_article_list = Article.objects.order_by('-pub_date')[:20]
    context = {'latest_article_list': latest_article_list}
    return render(request, 'index.html', context)

在我的项目范围内的urls.py:

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
        url(r'^$', 'Project_Name.views.home', name='home'),
        url(r'^admin/', include(admin.site.urls)),
        ...

下面是first_app应用程序中的models.py:

from django.db import models
from datetime import datetime

class Article(models.Model):
            name = models.CharField(max_length=140)
            content = models.CharField(max_length=1000)
            pub_date = models.DateTimeField(default=datetime.now())

下面是我的first_app应用程序中的views.py:

def article_detail(request, article_id):
    art = get_object_or_404(Article, pk=article_id)
    return render(request, 'first_app/detail.html', {'article': art})

下面是first_app templates文件夹中的detail.html:

<h2><u>{{ article.name }}</u></h2>
<b>Published On: </b>{{article.pub_date }}
<b>Content: </b>
<ul>
    <li>{{ article.content }}</li>
</ul>

这是我的项目主页index.html:

{% if latest_article_list %}
<h2>Latest Articles</h2>
<ul>
    {% for article in latest_article_list %}
        <li><a href="/first_app/{{ article.id }}/">{{article.name }}</a></li>
    {% endfor %}
</ul>
{% else %}
    <p>No articles are available.</p>
{% endif %}

一切正常。

我的问题是:如果我有两个或两个以上的应用程序,每一个都有自己的文章(我是因为其他原因将文章分拆给不同的应用程序),我如何在主页上获得那些文章?然后,我如何构建URL以便当我从主页点击一篇文章时,它会将我带到正确的应用程序URL?

例如,我有应用程序:first_app、second_app和third_app。每个app都有几篇文章在里面。我想我的主页显示所有的文章从每一个应用程序。如果我点击first_app的一篇文章(比如发布在first_app上的第三篇文章),我将被指向url127.0.0.1:8000/first_app/3。同样,如果我点击third_app中的一篇文章(比如发布在third_app上的第二篇文章),我将被指向url127.0.0.1:8000/third_app/2

我不知道如何迭代我的应用程序的所有模型,以获得文章表的数据。我不知道如何生成URL来反映文章来自的应用程序。我试过几种方法,但都不奏效。我被困在这一点上了。我对Django很陌生,所以请给我一些有帮助的评论或解决方案,而不是打倒我的问题。

我应该如何更改我的视图、URL和html页面来完成此操作?多谢了。

共有1个答案

巫马泓
2023-03-14

对于URL问题,请在模型上使用get_absolute_url功能,

关于在应用程序中迭代所有模型的问题,这不是你必须在模板中做什么,你应该在视图中收集你需要的数据,并将其呈现给模板进行渲染,所以答案是你在视图中选择你需要的模型,然后将其发送给模板。

但是应用程序应该是可重用的组件,如果你的应用程序彼此之间有很强的依赖性,那就很难激励它们成为单独的应用程序。

 类似资料:
  • 问题内容: 我在MySQL数据库中有几个临时表,它们共享相同的架构并具有动态名称。我将如何使用Django与这些表进行交互?一个模型可以从多个表中提取数据吗? 问题答案: 我相信,你可以创建一个工厂函数,该函数将通过动态db_table返回你的模型。 编辑:每次调用此函数时,Django不会创建类属性的新实例。为它创建一个新实例取决于类的名称(Django必须将其缓存在某个地方)。元类可用于在运行

  • 我需要使用 laravel 5.3 和 vuejs 2 构建一个应用程序,因为我需要使用双向绑定而不是使用 jquery。 我需要用刀片模板设置视图。然后,我需要在每个页面中使用vuejs,如下所述。 资源/断言/js/组件/List.vue resources/asserts/views/post/index.blade.php 有Add。vue创建.blade。php等…在Add。vue 这是

  • 我有一个测试自动化工具,现在我们正在为我们的网络应用程序的自动化测试实现页面对象模型,根据我的理解,如果你只有一个应用程序要测试,页面对象模型是好的,但是我们有多个网络应用程序要测试测试。我只是想知道是否真的有可能为多个Web应用程序创建页面对象模型,并且该工具应该能够通过使用页面对象进行自动化测试??

  • 问题内容: Django 是否可以在一个模型中包含多个模型?我正在尝试创建个人资料编辑表单。因此,我需要包括User模型和 UserProfile模型中的某些字段。目前我正在使用2种形式 有没有一种方法可以将这些合并为一个表单,或者我是否只需要创建一个表单并处理数据库加载并保存自己? 问题答案: 你可以只在一个html元素的模板中显示这两种形式。然后,只需在视图中单独处理表单即可。你仍然可以使用而

  • 问题内容: 因此,我在MyApp文件夹中有一个models.py文件: 它可以是大约10-15课。 如何在MyApp中查找所有模型并获取其名称? 由于模型是不可迭代的,因此我什至不知道这是否可行。 问题答案: 对于较新版本的Django,请在下面查看Sjoerd答案 这是完成你想要做的事情的最佳方法: 在此示例中,model是实际模型,因此你可以使用它做很多事情:

  • 我怎么能做到..以编程方式有什么方法可以做到这一点。 Pls救命!