我有一個名爲Project_Name的項目和一個名爲first_app的應用程序,其中包含一些文章。 我在我的主頁上顯示這些文章標題作爲應用頁面上文章的鏈接。從單個html頁面上的多個django應用模型獲取數據
所以在127.0.0.1:8000/
我有index.html。在這裏,我顯示文章列表。然後,如果我點擊一篇文章,我會轉到127.0.0.1:8000/first_app/1
,以顯示第一篇文章。
這裏是我的項目範圍內的views.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)),
...
這裏是我的models.py我first_app應用程序中:
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})
這是我detail.html在我的first_app模板文件夾:
<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 %}
這是所有工作的罰款。
我的問題: 如果我有兩個或更多的應用程序,每一個都有自己的文章(我打破了由其他原因不同的應用程序的文章),我怎麼會得到在主頁上的文章?以及我如何構建這些網址,當我點擊主頁上的一篇文章時,它會將我帶到正確的應用網址?
因此,例如,我有應用程序:first_app,second_app和third_app。每個應用程序都有幾篇文章。我希望我的主頁能夠顯示來自每個應用的所有文章。如果我點擊來自first_app的文章(比如發佈在first_app上的第三篇文章),我可以訪問url 127.0.0.1:8000/first_app/3
。同樣,如果我點擊third_app中的文章(比如發佈在third_app上的第二篇文章),我將轉向url 127.0.0.1:8000/third_app/2
。
我不知道如何迭代我的應用程序的所有模型來獲取文章表格的數據。我不知道如何生成網址來反映文章的來源。我嘗試了一些東西,但沒有任何工作。我堅持在這一點上。 我對Django很新,所以請給我一些有用的意見或解決方案,而不是敲掉我的問題。
我該如何改變我的意見,網址和html頁面來做到這一點?謝謝。
謝謝。好的,我如何從我的項目視圖中的多個應用程序中收集數據,用於我的功能主頁?像'從first_app.models導入文章'爲每個應用程序?那麼對於second_app.models和third_app.models也有導入行? – brno792 2013-04-21 23:30:22
我不會給我的模型命名同樣的東西,它令人困惑。你必須做「從first_app.models導入Article作爲FirstAppArticle;從second_app.models導入Article作爲SecondAppArticle」等 – krs 2013-04-21 23:37:20
另外,如果你的目標是讓不同的「事物」有關聯的文章,你可以使用一個通用的外鍵使它們適用於一系列模型,而不是與特定的模型綁定。 – krs 2013-04-21 23:40:49