NoReverseMatch at/blog/Django 2.0.5版本

2024-04-18 09:31:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Django教程。由于Django版本不同,我遇到了这个问题,我无法解决它。提前谢谢

NoReverseMatch at /blog/
'blog' is not a registered namespace
Request Method: GET
Request URL:    http://127.0.0.1:8000/blog/
Django Version: 2.0.5
Exception Type: NoReverseMatch
Exception Value:    
'blog' is not a registered namespace
Exception Location: /Users/sumeixu/anaconda3/lib/python3.6/site-packages/django/urls/base.py in reverse, line 84
Python Executable:  /Users/sumeixu/anaconda3/bin/python
Python Version: 3.6.3
Python Path:    
['/Users/sumeixu/djangotest',
 '/Users/sumeixu/anaconda3/lib/python36.zip',
 '/Users/sumeixu/anaconda3/lib/python3.6',
 '/Users/sumeixu/anaconda3/lib/python3.6/lib-dynload',
 '/Users/sumeixu/anaconda3/lib/python3.6/site-packages',
 '/Users/sumeixu/anaconda3/lib/python3.6/site-packages/aeosa']
Server time:    Thu, 7 Jun 2018 14:32:43 +0000

博客/网址.py地址:

from django.conf.urls import url
from django.urls import path
from . import views

urlpatterns =[
    path('', views.list_of_post,name='list_of_post'),
    path('<slug:slug>/', views.list_of_post,name='post_detail')
]

你知道吗网址.py你知道吗

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls'),name='blog'),
]

你知道吗视图.py你知道吗

def post_detail(request,slug):
    post = get_object_or_404(Post,slug=slug)
    template = 'blog/post/post_detail.html'
    return render(request,template,{'post':post})

Tags: pathdjangofrompyimportlibsiteblog
1条回答
网友
1楼 · 发布于 2024-04-18 09:31:11

include中删除namespace/name

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/', include('blog.urls')),
]

然后在blog/urls.py中设置app_name

app_name = 'blog'

urlpatterns =[
    path('', views.list_of_post,name='list_of_post'),
    path('<slug:slug>/', views.list_of_post,name='post_detail')
]

您可以在Django 1.9 release notes中阅读有关此更改的更多信息。从Django 2.0开始,除非设置了app_name,否则不能在include中设置namespace。你知道吗

相关问题 更多 >