Python NoReverseMatch at/';博客';不是已注册的命名空间
我正在尝试链接两个页面。页面文件为home.html和pageOne.html。我得到“NoReverseMatch at/'blog'不是注册的命名空间”。我用的是django。当我第一次创建应用程序时,我将其命名为artclBlog,然后我在其中创建了一个templates文件夹和另一个文件夹,我将其命名为blog。我想我应该保持这两个名字相同,这可能会在我的代码中造成一些混乱 我的观点Python NoReverseMatch at/';博客';不是已注册的命名空间,python,django,Python,Django,我正在尝试链接两个页面。页面文件为home.html和pageOne.html。我得到“NoReverseMatch at/'blog'不是注册的命名空间”。我用的是django。当我第一次创建应用程序时,我将其命名为artclBlog,然后我在其中创建了一个templates文件夹和另一个文件夹,我将其命名为blog。我想我应该保持这两个名字相同,这可能会在我的代码中造成一些混乱 我的观点 from django.shortcuts import render, get_object_or_
from django.shortcuts import render, get_object_or_404
from .models import Blog
def home(request):
blogs = Blog.objects.order_by('-date')
return render(request, 'blog/home.html', {'blogs': blogs})
我的URL.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from artclBlog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
path('<int:blog_id>/', views.PageOne, name='PageOne')
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
home.html
{% for blog in blogs %}
<a href="{% url 'blog:PageOne' blog.id %}">
<h2 id="txt">{{ blog.title }}</h2>
</a>
<h4 id="txt">{{ blog.date|date:'M d y' }}</h4>
<p id="txt">{{ blog.summary|truncatechars:190 }}</p>
<hr>
{% endfor %}
{%用于博客中的博客%}
{{blog.date}日期:'mdy'}
{{blog.summary}truncatechars:190}
{%endfor%}
您没有在URL.py
中定义应用程序名称,因此这意味着博客:
在博客:PageOne
中没有意义。因此,您可以定义一个app\u名称
,或者删除名称空间
选项1:在url.py中添加app\u名称
您可以通过在urls.py
中写入app\u name
来指定名称空间:
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from artclBlog import views
app_name = 'blog'
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
path('<int:blog_id>/', views.PageOne, name='PageOne')
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
问题可能出在主视图的模板中。因此,此文件存在:path/to/app/templates/blog/home.html
?显示您的视图。主模板,也不是图片,而是粘贴错误文本谢谢您的帮助。我尝试了两种选择。我在url.py中添加了“app_name='blog'”。我还删除了带有名称空间的a标记。但是我仍然得到相同的错误页。@Lskywaker:但是你不应该同时做这两件事,你可以从两件事中选择一件。对不起,我的意思是我两件事都试过了,但我仍然得到相同的错误页。现在我已经在url.py中添加了:“app_name=‘blog’”。将名称空间保留在链接中,删除该名称空间似乎不切实际,因为我正在尝试链接到另一个页面。@Lskywaker:可能还有另一个{%url…%}
具有名称空间(或不具有名称空间)。通常,如果使用DEBUG=True
,Django将突出显示出错的行。@Lskywaker:。
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings
from artclBlog import views
app_name = 'blog'
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
path('<int:blog_id>/', views.PageOne, name='PageOne')
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
{% for blog in blogs %}
<a href="{% url 'PageOne' blog.id %}">
<h2 id="txt">{{ blog.title }}</h2>
</a>
<h4 id="txt">{{ blog.date|date:'M d y' }}</h4>
<p id="txt">{{ blog.summary|truncatechars:190 }}</p>
<hr>
{% endfor %}