Кнопка для обновления поста в блоге - PullRequest
0 голосов
/ 25 июня 2019

У меня проблема с тем, чтобы правильно создать кнопку на основе Bootstrap 4.3, которая активирует обновление сообщения. Я создал это представление :

def updatePost(request, slug_post=None):
    update_post = get_object_or_404(BlogPost, slug_post=slug_post)
    form = BlogPostForm(request.POST or None, request.FILES or None, instance=update_post)
    if form.is_valid():
        update_post = form.save(commit=False)
        update_post.slug_post = slugify(update_post.title)
        update_post.save()
        return redirect('post_list')

    context = {
        'form': form,
        }
    template = 'blog/editing/create_post.html'
    return render(request, template, context)

и этот путь :

path("blog/<str:slug_post>/update/", views.updatePost, name='update_post'),

Но когда я использую эту кнопку :

<a class="btn btn-primary btn-lg mt-2" href="{% url 'update_post' %}">Update</a>

Я вижу это сообщение об ошибке:

Реверс для update_post без аргументов не найден. 1 шаблон (ы) попробовал: ['blog / (? P [^ /] +) / update / $']

Странно то, что если я напишу ссылку на обновление в адресную строку, я смогу обновить свой пост. Например: у меня есть эта ссылка на пост: /blog/title-slug-post/. Если я наберу /blog/title-slug-post/update/, я смогу обновить сообщение.

В чем я не прав?

1 Ответ

0 голосов
/ 25 июня 2019

Вам необходимо включить аргумент slug_post в тег шаблона URL. Прямо сейчас он не знает, какой слаг вам нужен, и выдает ошибку.

{% url 'update_post' slug_post='title-slug-post' %}

Если вы передаете объект BlogPost в контексте, вы также можете отформатировать его следующим образом.

{% url 'update_post' slug_post=blog_post.slug_post %}
...