我在 Django 项目中编辑 post 时遇到问题
I have trouble in editing a post in django project
我正在开发一个 Django 项目,我可以在其中创建 post 并使用 post 的 ID 编辑特定的 post。
views.py
@login_required
def editpost(request,id):
postform = NewPost.objects.get(id=id)
if request.method == "GET":
post = NewPostForm(request.GET, instance=postform)
user = request.user.id
timestamp = datetime.now()
if post.is_valid:
post = post.save()
postdata = post.save(id = id,post = post,user = user,timestamp = timestamp)
postdata.save()
return HttpResponseRedirect(reverse("index"))
return render(request,"network/postform.html",{
"postform" : postform,
"id" : id,
})
urls.py
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("postform", views.createpost, name="postform"),
path("editform/<int:id>",views.editpost,name="editpost"),
]
editform.html
{% extends 'network/layout.html' %}
{% block body %}
<div style="margin: 70px 10px 10px 10px;">
<!-- <h1>Create New Post</h1> -->
<div class="border border-success" style="margin: 10px 10px 10px 10px; position: relative;">
<div style="margin: 10px 10px 10px 10px;">
<label>New post</label>
<form id="NewPostForm" action="{% url 'index' %}" method="GET">
{% csrf_token %}
<div class="form-group">
{{ postform }}
</div>
<input class="btn btn-success" type="Submit" value="Submit">
</form>
</div>
</div>
</div>
{% endblock %}
我在路由模板时遇到问题。
我现在该怎么办!?
看起来错误实际上是在 like.html
中。呈现编辑 link 时,django 尝试使用 {% url 'editpost' postform.id %}
进行查找。 django 试图告诉你的是,虽然 editpost
在你的 urls.py 中,但提供的参数不匹配。
我实际上并没有检查过,但你似乎在 urls.py
中 have to pass arguments with their names specified,所以由于 urlconf 看起来像 "editform/<int:id>"
,你必须通过 {% url 'editpost' id=postform.id %}
.
我正在开发一个 Django 项目,我可以在其中创建 post 并使用 post 的 ID 编辑特定的 post。
views.py
@login_required
def editpost(request,id):
postform = NewPost.objects.get(id=id)
if request.method == "GET":
post = NewPostForm(request.GET, instance=postform)
user = request.user.id
timestamp = datetime.now()
if post.is_valid:
post = post.save()
postdata = post.save(id = id,post = post,user = user,timestamp = timestamp)
postdata.save()
return HttpResponseRedirect(reverse("index"))
return render(request,"network/postform.html",{
"postform" : postform,
"id" : id,
})
urls.py
urlpatterns = [
path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("postform", views.createpost, name="postform"),
path("editform/<int:id>",views.editpost,name="editpost"),
]
editform.html
{% extends 'network/layout.html' %}
{% block body %}
<div style="margin: 70px 10px 10px 10px;">
<!-- <h1>Create New Post</h1> -->
<div class="border border-success" style="margin: 10px 10px 10px 10px; position: relative;">
<div style="margin: 10px 10px 10px 10px;">
<label>New post</label>
<form id="NewPostForm" action="{% url 'index' %}" method="GET">
{% csrf_token %}
<div class="form-group">
{{ postform }}
</div>
<input class="btn btn-success" type="Submit" value="Submit">
</form>
</div>
</div>
</div>
{% endblock %}
我在路由模板时遇到问题。
我现在该怎么办!?
看起来错误实际上是在 like.html
中。呈现编辑 link 时,django 尝试使用 {% url 'editpost' postform.id %}
进行查找。 django 试图告诉你的是,虽然 editpost
在你的 urls.py 中,但提供的参数不匹配。
我实际上并没有检查过,但你似乎在 urls.py
中 have to pass arguments with their names specified,所以由于 urlconf 看起来像 "editform/<int:id>"
,你必须通过 {% url 'editpost' id=postform.id %}
.