Представляется, что вид обновления Django работает только с URL-адресами регулярных выражений - PullRequest
1 голос
/ 20 октября 2019

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

def update_post(request, id=None):
    obj = get_object_or_404(PostModel, id=id)
    form = PostModelForm(request.POST or None, instance=obj)
    if form.is_valid():
        obj = form.save(commit=False)
        print(f"The object that i am going to save is {form.cleaned_data}")
        obj.save()
        messages.success(request, f"Updated object with id {id}")
        return HttpResponseRedirect(f"/blog/read/{id}")
    context = {
        "form": form
    }
    return render(request, "blog/update-post.html", context)

Ниже мой update-post.html:

<html>
<form method="POST" action="."> {% csrf_token %}
    {{form.as_p}}
    <input type="submit" value="Change">
</form>

</html>

И это мой файл urls.py:

from django.urls import path, include
from django.conf.urls import url
from .views import list_posts, read_post, create_post, update_post

app_name = "blog"

urlpatterns = [
    path('posts/', list_posts, name="list"),
    path('read/<int:id>', read_post, name="read"),
    path("create/", create_post, name="create"),
    #url(r'^(?P<id>\d+)/edit/$', update_post, name="update")
    path("update/<int:id>", update_post, name="update"),
]

Представление обновления работает только тогда, когда я использую приведенный выше шаблон регулярного выражения для редактирования сообщения.

В противном случае я получаю следующее сообщение об ошибке:

Error message

Может кто-нибудь сказать мне, где я с этим не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...