Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python NoReverseMatch at/';博客';不是已注册的命名空间_Python_Django - Fatal编程技术网

Python NoReverseMatch at/';博客';不是已注册的命名空间

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_

我正在尝试链接两个页面。页面文件为home.html和pageOne.html。我得到“NoReverseMatch at/'blog'不是注册的命名空间”。我用的是django。当我第一次创建应用程序时,我将其命名为artclBlog,然后我在其中创建了一个templates文件夹和另一个文件夹,我将其命名为blog。我想我应该保持这两个名字相同,这可能会在我的代码中造成一些混乱

我的观点

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 %}