Я пытаюсь создать простой блог с базовой функцией публикации через очень простую форму. Я пытаюсь выполнить функцию:
если новые сообщения POST (без ошибок и т. Д.) Сохраняются в базе данных и перенаправляются на вновь созданную страницу post_details. В противном случае я хочу, чтобы он снова отобразил форму сообщения. Я получаю сообщение об ошибке NoReverseMatch в / post / pk и не могу найти свою ошибку. Я явно не понимаю что-то правильно. Соответствующий код ниже:
views.py
def post_new(request):
if request.method == "POST":
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
post.author = request.user
post.published_date = timezone.now()
post.save()
return redirect('post_detail', pk=post.pk)
else:
form = PostForm()
return render(request, 'blog/post_edit.html', {'form': form})
post_edit.html
{% extends 'blog/base.html' %}
{% block content %}
<h2>New post</h2>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Save</button>
</form>
{% endblock %}
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>/', views.post_detail, name='post_detail'),
path('post/new/', views.post_new, name='post_new'),
]