私はDjangoを少し新しくしました。私は標準ライブラリアプリを構築することから始めました。複数の引数を持つDjangoの動的URL
私が最初に作成したのは、http://127.0.0.1:8000/Albums/[albumという名前で/にジャーナルのすべての記事を表示するスラッグを使ったURLパターンです。
これは機能しました。私がやったことは、記事の名前をクリック可能にして、曲の詳細を含むページにあなたを紹介することでした。特に、これらの詳細には、http://127.0.0.1:8000/Albums/[articleという名前のリンク/ [article_id] /を介してアクセスできるようにしたいと考えていました。今のarticle_idは、すべての記事を含むデータベーステーブルの主キーです。私は、その後で終わる
{% 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 %}
:
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 })
そして最後にテンプレート
はそうするために私は2つのURLパターンを定義しました次のエラーメッセージ:
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'変数をコンテキストdictに渡していません。この辞書{'articles ':articles}'には 'articles'変数しかありません。 'fjournal'引数もそれに加えてください。 – xyres
その部分はリストに対応していますが、そこには1つの引数しかないはずですか?それとも、if文の他のオプションをどうにかして混乱させますか? – DisneylandSC
そのコンテキストdictに 'fjournal'を追加しようとしましたか?そして、いいえ、そこにただ一つの変数があるべきではありません。必要な数だけ追加することができます。 – xyres