@PreFireSkills

Почему не работает ссылка на обновление поста в Django?

Здравствуйте, не работает url ссылка на станицу обновление поста,причем сама страница прекрасно работает.
Reverse for 'edit' with keyword arguments '{'pk': ''} - ошибка такая

views.py
@login_required
def post_edit(request, pk):
    post = Post.objects.get(id=pk)
    form = PostEditForm(instance=post)
    if request.method == 'POST':
        form = PostEditForm(data=request.POST, files=request.FILES, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.user = request.user
            post.save()
            messages.success(request, 'Post updated successfully')
            return render(request, 'posts/post/edit.html', )

        else:
            messages.error(request, 'Error updating your post')
    else:
        form = PostEditForm(instance=post)
    return render(request, 'posts/post/edit.html', {'form': form, 'instance': post})


urls.py
urlpatterns = [
    path('create/', views.post_create, name='create'),
    path('edit/<int:pk>/', views.post_edit, name='edit'),
]


html
{% extends "base.html" %}

{% block title %}Good job{% endblock %}

{% block content %}
  <h1> Hi, {{ user.username }}!</h1>
  <p>Your post has been successfully add to platform. </p>
    You can <a href="{% url "posts:edit" pk=post.id %}">edit your post</a>
{% endblock %}


Примечание: если написать pk=2, то все прекрасно работает. Кто знает,в чем может быть проблема?
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Wispik
пустое значение, потому что ты передаешь post в шаблон под названием instance
в view.py вот так поправь:
return render(request, 'posts/post/edit.html', {'form': form, 'post': post})
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы