0

私は次のようにURLを設定して渡そうとしています:

/details/12345

テンプレート HTML:

    <div class="row">
    {% if article_list %}
    {% for article in article_list %}
    <div>
      <h2>{{ article.title }}</h2>
      <p>{{ article.body }}</p>
      <p><a class="btn btn-default" href="{% url 'details' article.id %}" role="button">View details &raquo;</a></p>
    </div><!--/.col-xs-6.col-lg-4-->
    {% endfor %}
    {% endif %}
  </div><!--/row-->

urls.py (フル):

    from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', 'news_readr.views.home', name='home'),
    url(r'^details/(?P<article_id>\d+)/$', 'news_readr.views.details', name='details'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

ビュー.py:

from django.shortcuts import render
from .models import Article

# Create your views here.
def home(request):
    title = "Home"
    article_list = Article.objects.all()
    for article in article_list:
        print(article.id)
    context = {
               "title": title,
               "article_list": article_list,
               }
    return render(request, "home.html", context)

def details(request, article_id = "1"):
    article = Article.objects.get(id=article_id)
    return render(request, "details.html", {'article': article})

次のようなエラーが表示されます。

 NoReverseMatch at /

Reverse for 'details' with arguments '()' and keyword arguments '{}'
not found. 1 pattern(s) tried: ['details/(?P<article_id>\\d+)/$']

私は Django を使用して 1 週間経ちましたが、URL 名前付きグループの構成に何か問題があると思います。助けてください!ティア!

更新: URL 構成を削除して元に戻すと:

url(r'^details/$', 'news_readr.views.details', name='details'),

エラーは次のように変わります。

引数 '(1,)' とキーワード引数 '{}' を持つ 'details' の逆が見つかりません。1 つのパターンが試行されました: ['details/$']

1したがって、この場合に渡される引数を取得しているようです。したがって、これは正規表現の問題のようです。Pythex で式を試してみましたが、それでも式が何にも一致しないようです。

4

2 に答える 2

2

URL パターンの場合

url(r'^details/(?P<article_id>\d+)/$', 'news_readr.views.details', name='details'),

タグの正しい使い方は

{% url 'details' article.id %}

これは、detailsurl パターンに grouparticle_idがあるためです。これをタグに渡す必要があります。

上記の URL パターンがあり{{ article.id}}、テンプレートに正しく表示される場合、上記のテンプレート タグでエラーが発生することはありませんReverse for 'details' with arguments '()'。これは、コードを更新していないか、コードを変更した後にサーバーを再起動していないことを示しています。

URLパターンを次のように変更すると

url(r'^details/$', 'news_readr.views.details', name='details')

article.id次に、url タグからを削除する必要があります。

{% url 'details' %}
于 2015-10-02T22:01:24.333 に答える
1

あなたのパターンが間違っていると思います(正規表現の専門家ではありません)。これを試して

url(r'^details/((?P<article_id>[0-9]+)/$', 'news_readr.views.details', name='details'),
于 2015-10-03T07:45:55.960 に答える