最近在学习《python 从入门到实战》,习题19-1中出现了一个错误,
TypeError at /edit_post/
edit_post() missing 1 required positional argument: 'post_id'
如下图所示:
如上图所示,类型错误,edit_post缺少一个要求的位置参数:post_id,其中blogs的url.py 的代码如下:
urlpatterns = [
path('', views.index,name='index'),
path('new_post',views.new_post,name='new_post'),
path('edit_post/',views.edit_post,name='edit_post'),
]
问题就出现在第三行,此种情况下打开这个网页需要一个post_id参数,但第三行的path路径里却没有这个参数,所以显示此错误(view.py 此视图的声明为edit_post(request,post_id)),将第三行改为:
path('edit_post/<int:post_id>',views.edit_post,name='edit_post'),
同时在html里对此视图的引用改为:<a href="{% url 'blogs:edit_post' post.id %}">edit post</a>
错误消失。