反向 'get_post' 与参数 '()' 和关键字参数 '{'slug': 'sample-post'}' 未找到
Reverse for 'get_post' with arguments '()' and keyword arguments '{'slug': 'sample-post'}' not found
我正在使用 Django 1.9。在实现基于 class 的视图和 urlpatterns 时,我无法将我的特定 link 重定向到相应的 post.
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
我的错误如下:
当您使用 url 正则表达式 r'^(?P<slug>\w+)/$
时,\w
匹配字母数字字符和下划线。但是,它不会匹配连字符 -
。
因此,当您的模板查找 slug
等于 sample-post
的 URL 时,上述正则表达式将找不到匹配项。您应该尝试改用它:
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/$', Display.as_view(), name="get_post"),
]
我正在使用 Django 1.9。在实现基于 class 的视图和 urlpatterns 时,我无法将我的特定 link 重定向到相应的 post.
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
我的错误如下:
当您使用 url 正则表达式 r'^(?P<slug>\w+)/$
时,\w
匹配字母数字字符和下划线。但是,它不会匹配连字符 -
。
因此,当您的模板查找 slug
等于 sample-post
的 URL 时,上述正则表达式将找不到匹配项。您应该尝试改用它:
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/$', Display.as_view(), name="get_post"),
]