Balik untuk 'post_detail' dengan argumen '('chempion',)' tidak ditemukan. 1 pola dicoba: ['(?P[-a-zA-Z0-9_]+)/(?P[-a-zA-Z0-9_]+)/$']

segera setelah saya menambahkan fungsi dan tampilan ke template, saya menemukan kesalahan ini

view.py

def post_detail(request, category_slug, slug):
    post = get_object_or_404(Post, slug=slug)

    try:
        next_post = post.get_next_by_date_added()
    except Post.DoesNotExist:
        next_post = None

    try:
        previous_post = post.get_previous_by_date_added()
    except Post.DoesNotExist:
        previous_post = None

    context = {
        'post': post,
        'next_post': next_post,
        'previous_post': previous_post
    }

    return render(request, 'post_detail.html', context)

urls.py

  path('<slug:category_slug>/<slug:slug>/', post_detail, name='post_detail'),
    path('<slug:slug>/', category_detail, name='category_detail'),

Detail posting.html

 {% if next_post %}
    <a href="{% url 'post_detail' next_post.slug %}">Next</a>
 {% else %}
    This is the last post!
 {% endif %}
1
asd 13 Mei 2021, 20:13

1 menjawab

Jawaban Terbaik

Tampilan post_detail memerlukan dua slug: satu slug untuk kategori, dan satu untuk pos.

Jika model Post Anda misalnya memiliki ForeignKey ke model Category, Anda dapat merujuknya dengan:

<a href="{% url 'post_detail' next_post.category.slug next_post.slug %}">Next</a>

Dalam pandangan Anda, Anda mungkin ingin memeriksa siput untuk kategori dan untuk pos, jadi:

def post_detail(request, category_slug, slug):
    post = get_object_or_404(Post, category__slug=category_slug, slug=slug)
    # …
1
Willem Van Onsem 13 Mei 2021, 17:33