Не удается перенаправить форму Django

#django #django-models #django-forms #django-views

#django #django-модели #django-forms #django-просмотры

Вопрос:

Я пытаюсь создать простой блог с базовой функцией публикации через очень простую форму. Функция, которую я пытаюсь выполнить, является:

если новые сообщения post (без ошибок и т.д.) Сохраняются в базе данных и перенаправляются на недавно созданную страницу post_details. В противном случае я хочу, чтобы он снова повторно отобразил форму post. Я продолжаю получать ошибку 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'),
]
  

Ответ №1:

Я нашел свою ошибку внутри моей ссылки для в моем представлении шаблона post_detail.html:

 <a class="btn btn-default" href="{% url 'post_edit' pk=post.pk %}"><span class="glyphicon glyphicon-pencil"></span></a>
  

Это было правильное перенаправление на post_detail.html но ссылка выше нарушала работу моей страницы.