我對Django有點新,我想通過構建標準庫應用程序開始。具有多個參數的Django動態網址
我最初創建的是一個使用slu url的url模式,通過http://127.0.0.1:8000/Albums/[album name//向您顯示日記中的所有文章。
這工作。然後我試圖做的是使文章名稱可點擊,以便他們會引用你到一個包含歌曲細節的頁面。特別是我希望通過表格http://127.0.0.1:8000/Albums/[article名稱/ [article_id] /的鏈接訪問這些詳細信息。目前,article_id是包含所有文章的數據庫表中的主鍵。
爲了做到這一點,定義了兩個URL模式:
urlpatterns = [
url(r'^(?P<slug_journal>[\w-]+)/$', views.Journal_Article_Page, name='Journal_Page'),
url(r'^(?P<slug_journal>[\w-]+)/(?P<id>\d+)/$', views.Journal_Article_Page, name='Journal_Article_Page'),
]
和視圖:
def Journal_Article_Page(request, slug_journal=None, id=None):
if slug_journal:
if id:
farticle = get_object_or_404(Article_Draft_Table_1, DRAFT_ID = id)
return render(request, 'journal_article_details.html', { 'farticle': farticle, 'fjournal': slug_journal })
else:
fjournal = get_object_or_404(Journal_Table, Journal_slug = slug_journal).JOURNAL_ID
articles = Article_Draft_Table_1.objects.filter(JOURNAL_ID = fjournal)
return render(request, 'journal_articles.html', { 'articles': articles })
最後一個模板:
{% extends 'base.html' %}
{% block content %}
<p>List of articles.</p>
<br>
{% for article in articles %}
<div class="col-sm-10">
<a href='{% url "Journal_Article_Page" slug_journal=fjournal id=article.DRAFT_ID %}'>{{ article.Draft_title }}</a>
</div>
{% endfor %}
{% endblock %}
然後我就結了thw以下錯誤:
Reverse for 'Journal_Article_Page' with arguments '()' and keyword arguments '{'id': 3, 'slug_journal': ''}' not found. 1 pattern(s) tried: ['Journals/(?P<slug_journal>[\\w-]+)/(?P<id>\\d+)/$']
對我來說,這似乎意味着slug_journal字符串沒有正確傳遞。事實上,如果我將模板中的fjournal替換爲某個特定日記名稱的實際字符串,那麼所有功能都可以正常工作。我現在嘗試了很多不同的方法來解決這個問題,但似乎無法找到解決方案。實際上,我甚至不確定該值是否傳遞不到,或者我沒有在模板中正確引用它。任何幫助,將不勝感激!
您沒有將'fjournal'變量傳遞給上下文字典。這個字典'{'articles':articles}'只有'articles'變量。同樣爲它添加'fjournal'參數。 – xyres
該部分對應於列表,我認爲應該只有一個參數沒有?或者它與if語句的其他選項混淆? – DisneylandSC
您是否嘗試添加'fjournal'添加到該上下文字典?不,那裏不應該只有一個變量。你可以添加儘可能多的,你想要的。 – xyres