【问题标题】:Reverse for 'get_post' with arguments '()' and keyword arguments '{'slug': 'sample-post'}' not found使用参数 '()' 和关键字参数 '{'slug': 'sample-post'}' 反转'get_post'
【发布时间】:2016-05-24 20:16:48
【问题描述】:

我正在使用 django 1.9。在实现基于类的视图和 urlpatterns 时,我无法将我的特定链接重定向到相应的帖子。

settings/urls.py:

from django.conf.urls import url, include
from django.contrib import admin
from posts.views import Home


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^post/', include("posts.urls")),
    url(r'^$', Home.as_view(), name="blog_home"),
]

posts/urls.py

from django.conf.urls import url, include
from .views import Display


urlpatterns = [
    url(r'^(?P<slug>\w+)/$', Display.as_view(), name="get_post"),
]

posts/views.py

class Display(View):
    def get(self, request, slug):
        params = {}
        params['post'] = Post.objects.get(slug=slug)        
        return render(request, "blog/viewpost.html", params)

    def post(self, request):
        pass

我的错误如下:

error is shown in that image

【问题讨论】:

    标签: python regex django url reverse


    【解决方案1】:

    当您使用 url 正则表达式 r'^(?P&lt;slug&gt;\w+)/$ 时,\w 匹配字母数字字符和下划线。但是,它不会匹配连字符 -

    因此,当您的模板查找 slug 等于 sample-post 的 URL 时,上述正则表达式将找不到匹配项。您应该尝试使用它:

    urlpatterns = [
        url(r'^(?P<slug>[-\w]+)/$', Display.as_view(), name="get_post"),
    ]
    

    【讨论】:

      猜你喜欢
      • 2019-08-07
      • 2016-11-12
      • 1970-01-01
      • 2016-05-01
      • 2013-10-20
      • 2019-10-03
      • 1970-01-01
      • 2023-04-01
      • 2018-08-07
      相关资源
      最近更新 更多