【问题标题】:NoReverseMatch Django, get_success_url in CreateViewNoReverseMatch Django,CreateView 中的 get_success_url
【发布时间】:2017-02-06 01:22:46
【问题描述】:

我在我的博客应用程序中创建了一个创建视图来创建帖子。在里面 创建视图我使用了函数 get_success_url。我想当我创建 一个帖子,它将重定向到 blog_post_list。 H

我得到错误:NoReverseMatch

我想这与 urlpatterns 有关系。

main urls.py

    from django.conf.urls import url, include
    from django.contrib import admin

    from blog.views import AboutPageView, ContactPageView 

    urlpatterns = [
        url(r'', include('blog.urls', namespace='posts')),
        url(r'^blog/', include('blog.urls', namespace='posts')),
        url(r'^about/$', AboutPageView.as_view(), name='about'),
        url(r'^contact/$', ContactPageView.as_view(), name='contact'),


       #admin and login
       url(r'^admin/', admin.site.urls), 

    ]

博客应用中的网址

from django.conf.urls import url

from .views import blog_postListView, blog_postDetailView, blog_postCreateView 

urlpatterns = [
    url(r'^$', blog_postListView.as_view(), name='blog_post_list'),
    url(r'^create/', blog_postCreateView.as_view(), name='blog_post_create'),
    url(r'^(?P<slug>[-\w]+)$', blog_postDetailView.as_view(), name='detail'),
]

博客应用中的浏览量

class blog_postCreateView(CreateView):
    #model = blog_post
    form_class = blog_postForm
    template_name = "form.html"
    #fields = ["title", "content"]
    def get_success_url(self):
        return reverse("blog_post_list")

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    您尚未包含命名空间,因此无法找到 blog_post_list

    所以只需在反向调用中添加命名空间

    reverse("posts:blog_post_list")

    有关NoReverseMatch 错误的更多信息,请参阅What is a NoReverseMatch error, and how do I fix it?

    【讨论】:

    • 非常感谢 :) 一定会阅读关于没有反向匹配的链接,您节省了我的时间欢呼,感谢您的帮助
    • @RobertF。 - 不用担心,享受
    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2014-02-10
    相关资源
    最近更新 更多