NoReverseMatch / Django / WebBlog - PullRequest
       0

NoReverseMatch / Django / WebBlog

0 голосов
/ 05 апреля 2020

Я пытаюсь прикрепить идентификатор из базы данных к сообщению Realting. Я не знаю что не так. Протестировал это несколько раз, но для меня это выглядит так, как будто все необходимые вещи связаны между собой. Может быть, вы можете проверить и отсканировать логический путь.

Я всегда получаю эту ошибку.

Reverse for 'post' with keyword arguments '{'post_id': 2}' not found. 1 pattern(s) tried: ['blog/post/<int:post_id$']

Код связан ниже. Идеи, что не так?

Models.py

from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
from django.utils import timezone


class BlogPost(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    message = models.CharField(max_length=250)
    created_at = models.DateTimeField(default=timezone.now)

    def get_url(self):
        return reverse('blog:post', kwargs={'post_id': self.id})

views.py

def index(request):
    return render(request, 'blog/base.html')

def timeline_view(request, username):
    post_form = PostForm()
    user = get_object_or_404(User, username=username)
    posts = BlogPost.objects.filter(user=user).order_by('-created_at')
    return render(request, 'blog/timeline.html', {'posts': posts, 'post_form': post_form, 'user': user})

@login_required
@require_POST
def create_post_view(request):
    post_form = PostForm(request.POST)
    if post_form.is_valid():
        post = post_form.save(commit=False)
        post.user = request.user
        post.save()
    return HttpResponseRedirect(reverse('blog:timeline', kwargs={'username': request.user.username}))

def post_view(request, post_id):
    post = get_object_or_404(BlogPost, id=post_id)
    return render(request, 'blog/post.html', {'post': post})

urls.py

from django.urls import path
from . import views


app_name = 'blog'
urlpatterns = [
    path('', views.index, name='blog'),
    path('<str:username>/timeline/', views.timeline_view, name='timeline'),
    path('create/', views.create_post_view, name='create'),
    path('post/<int:post_id', views.post_view, name='post'),

]

график времени. html

{% extends 'blog/base.html' %}

{% block blogContent %}
    {% if request.user.is_authenticated %}
    <form action="{% url 'blog:create' %}" method="post">
        {% csrf_token %}
        {{ post_form }}
        <button type="submit">Senden</button>
    </form>
    {% endif %}

    {% for post in posts %}
    <p>
        {{ post.message }} - {{ post.created_at }}
        <a href="{{ post.get_url }}">#{{ post.id }}</a>
    </p>

    {% empty %}
    <p> Du hast noch nichts geteilt </p>
    {% endfor %}

<a href="{% url 'web:index' %}">Zurück zum Index</a>

{% endblock %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...