Я пытаюсь прикрепить идентификатор из базы данных к сообщению 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 %}