【问题标题】:Django slug link edit page not found找不到 Django slug 链接编辑页面
【发布时间】:2017-05-08 10:44:21
【问题描述】:

当我使用 slug 作为我的网址时,我遇到了麻烦。它说没有帖子与查询匹配。

编辑和删除页面出现的问题,结果在详细页面中仍然可以正常工作。

但奇怪的是 404 错误是由 post.views.post_detail 引发的,而不是 post_update。

我在帖子应用中的网址

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 函数也已经返回 slg。 唯一的问题是在编辑页面中找不到帖子,即使slg标题与当前可用的帖子匹配。

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 函数不会执行。

可能有什么问题? 谢谢。

【问题讨论】:

  • 那么,既然您的总统任期即将结束,那么 是您打算在空闲时间开始做的事情吗?
  • 看起来您缺少几个'
  • 请贴出真实代码和完整的回溯
  • @MoinuddinQuadri 实际,its not to far from the truth!

标签: python django slug


【解决方案1】:

您的网址中缺少单引号 '。 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),
#                              ^

【讨论】:

  • 请原谅我,因为我在问题中写代码的错字,感谢您的帮助,但我很确定这不是困扰我的问题。我不知道或者你知道我应该检查的地方吗?
猜你喜欢
  • 2015-04-19
  • 2021-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多