django - Django 更新视图似乎只适用于正则表达式 url
问题描述
我开始使用 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"),
]
仅当我使用上述正则表达式 url 模式编辑帖子时,更新视图似乎才有效。
否则我会收到以下错误消息:
有人可以告诉我我哪里出了问题。
解决方案
推荐阅读
- reactjs - 如何在 React JS 中将切换标签保存到本地存储?
- ordereddict - 如何从有序字典创建数据框?
- python - Python 或 Pandas 的分箱或分组技术是什么
- c - execvpe 的便携式替代品
- css - React 中的自适应菜单
- python - 在多个条件下映射来自另一个数据帧的值
- unity3d - Unity 3D Shader 在 VR 模式下不显示
- freemarker - JBake:列出所有带有特定标签的帖子(tagged_posts)
- javascript - Javascript/HTML 表单基于 2 个下拉答案(Shopify)重定向到 url 路径
- javascript - 将 api 调用的返回响应保存到 Javascript 中的 PDF