Django slug link 找不到编辑页面
Django slug link edit page not found
我在 url 中使用 slug 时遇到了麻烦。它说没有 post 匹配查询。
编辑和删除页面出现的问题,在详情页中仍然正常。
但奇怪的是 404 错误是由 post.views.post_detail 引发的,而不是 post_update。
我的 urls 在 post 应用程序中
urlpatterns = [
url(r'r^$', post_list, name='list'),
url(r'^create/$', post_create, name='create'),
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'),
url(r'^(?P<slg>[\w-]+)/edit/$', post_update, name='update'),
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete),
]
观看次数
def post_detail(request, slg=None):
instance = get_object_or_404(Post, slg=slg)
context = {
"title":intance.title,
"instance":instance
}
return render(request, "post_detail.html", context)
def post_update(request, slg=None):
instance = get_object_or_404(Post, slg=slg)
form = PostForm(request.POST or None, request.FILES or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"title":instance.title,
"instance":instance,
"form", form,
}
return render(request, "post_form.html", context)
get_absolute_url 函数也已经 return slg。
唯一的问题是 post 在编辑页面中找不到,即使 slg 标题与当前可用的 posts.
匹配
System check identified no issues (0 silenced).
December 23, 2016 - 17:52:00
Django version 1.9.7, using settings 'blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Not Found: /hahaha/edit/
[23/Dec/2016 17:52:08] "GET /hahaha/edit/ HTTP/1.1" 404 1725
好像post_update函数不会执行。
可能出了什么问题?
谢谢。
您的 url 中缺少单引号 '
。 url 模式应该有效 str
url(r'r^$', post_list, name='list'),
url(r'^create/$', post_create, name='create'),
# ^
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'),
# ^
url(r'^(?P<slg>[\w-]+)/edit/$', post_edit, name='edit'),
# ^
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete),
# ^
我在 url 中使用 slug 时遇到了麻烦。它说没有 post 匹配查询。
编辑和删除页面出现的问题,在详情页中仍然正常。
但奇怪的是 404 错误是由 post.views.post_detail 引发的,而不是 post_update。
我的 urls 在 post 应用程序中
urlpatterns = [
url(r'r^$', post_list, name='list'),
url(r'^create/$', post_create, name='create'),
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'),
url(r'^(?P<slg>[\w-]+)/edit/$', post_update, name='update'),
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete),
]
观看次数
def post_detail(request, slg=None):
instance = get_object_or_404(Post, slg=slg)
context = {
"title":intance.title,
"instance":instance
}
return render(request, "post_detail.html", context)
def post_update(request, slg=None):
instance = get_object_or_404(Post, slg=slg)
form = PostForm(request.POST or None, request.FILES or None, instance=instance)
if form.is_valid():
instance = form.save(commit=False)
instance.save()
return HttpResponseRedirect(instance.get_absolute_url())
context = {
"title":instance.title,
"instance":instance,
"form", form,
}
return render(request, "post_form.html", context)
get_absolute_url 函数也已经 return slg。 唯一的问题是 post 在编辑页面中找不到,即使 slg 标题与当前可用的 posts.
匹配System check identified no issues (0 silenced).
December 23, 2016 - 17:52:00
Django version 1.9.7, using settings 'blog.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Not Found: /hahaha/edit/
[23/Dec/2016 17:52:08] "GET /hahaha/edit/ HTTP/1.1" 404 1725
好像post_update函数不会执行。
可能出了什么问题? 谢谢。
您的 url 中缺少单引号 '
。 url 模式应该有效 str
url(r'r^$', post_list, name='list'),
url(r'^create/$', post_create, name='create'),
# ^
url(r'^(?P<slg>[\w-]+)/$', post_detail, name='detail'),
# ^
url(r'^(?P<slg>[\w-]+)/edit/$', post_edit, name='edit'),
# ^
url(r'^(?P<slg>[\w-]+)/delete/$', post_delete),
# ^