【问题标题】:Django - cannot get the html page to display - NoReverseMatch ErrorDjango - 无法显示要显示的 html 页面 - NoReverseMatch 错误
【发布时间】:2020-12-27 15:55:30
【问题描述】:

我已经创建并运行了一个 django 应用程序。我正在尝试添加另一个 html 页面。 我已将关于页面添加到主页应用程序中 enter image description here

这是 home/views.py

from django.shortcuts import render, redirect, reverse
from hobby_product.models import hobby_product



def home(request):
    """ Return home page """
    #return redirect(reverse('home'))
    return render(request, 'home.html')


def not_found(request):
    """ Return 404 page not found """

    return render(request, '404.html')


def server_error(request):
    """ Return 500 internal server error """

    return render(request, '500.html')

def about(request):
    return render(
        request, "about.html"
    )

这是 home 中的 url.py:

from django.conf.urls import url, include                                                                                                                                                                                                                                                  
from .views import not_found, server_error, home, about

urlpatterns = [
    url('/', home, name='home'),
    url('not_found/', not_found, name='not_found'),
    url('server_error/', server_error, name='server_error'),
    url(r'^about$', about, name='about'),
    
]

这是基础应用的 url.py:

from django.conf.urls import url, include
from django.contrib import admin
from accounts.views import index, logout, login, registration, user_profile
from django.views.generic import RedirectView
from django.views.static import serve
from .settings import MEDIA_ROOT
from accounts import urls as accounts_urls
from about.views import about
from accounts.views import index
from accounts.views import home
from hobby_product import urls as urls_hobby_product
from cart import urls as urls_cart

from home import urls as urls_home
from about import urls as urls_about
from search import urls as urls_search
from checkout import urls as urls_checkout
from django.views import static
from .settings import MEDIA_ROOT


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', RedirectView.as_view(url='home/')),
    url(r'^media/(?P<path>.*)$', serve, {'document_root': MEDIA_ROOT}),
    url(r'^$', index, name="index"),
    url(r'^accounts/', include(accounts_urls)),
    url(r'^hobby_product/', include(urls_hobby_product)),
    url(r'^cart/', include(urls_cart)),
    url(r'^about/', include(urls_about)),
    url(r'^checkout/', include(urls_checkout)),
    url(r'^search/', include(urls_search)),
    url(r'^media/(?P<path>.*)$', static.serve, {'document_root': MEDIA_ROOT}),
    url(r'^home/', include(urls_home)),
]

最后这就是我在 base.html 中的调用方式

 </li>
                    <li class="nav-item"><a class="nav-link" href="{% url 'about' %}">About</a></li>
                    <li class="nav-item"><a class="nav-link" href="{% url 'all_hobby_products' %}">Book</a></li>

我收到错误:NoReverseMatch

enter image description here

我试图创建一个“关于”的新应用程序,但我仍然遇到相同的错误。我需要添加一些 html 页面并假设问题出在 url 上,但我看不出哪里有差异。任何想法或帮助将不胜感激!

【问题讨论】:

  • 请发布错误回溯

标签: html django django-templates


【解决方案1】:

NoReverseMatch 错误仅仅意味着 Django 无法使用给定的名称获得正确的反转。 包含 URL 的方法可能是问题所在。根据 Django,包含 URL 的方法有多种。

https://docs.djangoproject.com/en/3.1/ref/urls/#include

快速修复 基础应用中的 urls.py

...

#from home import urls as urls_home
...

urlpatterns = [
    ...
        url(r'^home/', include('home.urls')),
    ...

我已经尝试使用给出的信息并且它有效。

您也可以以类似的方式包含来自其他应用的其他 urlpatterns

【讨论】:

    【解决方案2】:

    从您定义的 URL 中,我看不到 all_hobby_products 的定义位置,或者您可能从另一个 urls.py 留下了一个 sn-p?不管怎样,试试这个:

    在您的子 url 配置中,即您包含在基本/根 URL 配置中的那些,将 app_name = 'app_name_here' 放在您的 URL 命名空间中,这样它就不会变得混乱。所以添加到你的home\urls.py

    ...
    
    app_name = "home"
    
    urlpatterns = [
         url(r'^about$', about, name='about'),
    ]
    
    

    因此,要获取“关于”网址,您将在模板中执行此操作:

    <a href="{% url 'home:about' %}">Home</a>
    

    更新

    您的问题实际上可能来自您includeing 子 URL 的方式,请尝试将其更改为例如:

    ...
        url(r'^home/', include("home.urls")),
    
    

    “home”是您的家庭应用程序,“urls”是您的家庭应用程序中的“urls.py”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-03-18
      • 2012-10-20
      • 1970-01-01
      相关资源
      最近更新 更多