gpt4 book ai didi

python -/'blog' 处的 NoReverseMatch 不是已注册的命名空间

转载 作者:行者123 更新时间:2023-12-04 09:04:14 25 4
gpt4 key购买 nike

我正在尝试链接两个页面。页面文件是 home.html 和 pageOne.html。我收到“NoReverseMatch at/'blog' 不是注册的命名空间”。我正在使用 django。当我第一次创建该应用程序时,我将其命名为 artclBlog,然后我在其中创建了一个模板文件夹和另一个文件夹,我将这个文件夹命名为 blog。我认为我应该保持这两个名称相同,这可能会导致我的代码出现一些困惑。

pic of error

我的观点.py

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

我的 urls.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)

我的模型.py

from django.db import models

class Blog(models.Model):
title = models.CharField(max_length=200, default='')
summary = models.CharField(max_length=200, default='')
pageOne = models.TextField(default='')
pageTwo = models.TextField(default='')
pageThree = models.TextField(default='')
pageFour = models.TextField(default='')
date = models.DateField(default='')

def __str__(self):
return self.title

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

最佳答案

您没有定义 app_name在你的urls.py ,因此这意味着 blog:blog:PageOne没有意义。因此,您可以定义 app_name ,或删除命名空间。

选项 1:添加 app_nameurls.py

您可以通过写入 app_name 来指定命名空间在 urls.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

<b>app_name = 'blog'</b>

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)

但这意味着所有 View 现在都使用此命名空间,包括 home例如。

选项 2:删除命名空间

另一个选项是删除 {% url … %} template tag [Django-doc] 中的命名空间:

{% for blog in blogs %}
<a href="<b>{% url 'PageOne' blog.id %}</b>">
<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 %}

关于python -/'blog' 处的 NoReverseMatch 不是已注册的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63492544/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com