【问题标题】:Can anyone help my find find error in django?任何人都可以帮助我在 django 中查找错误吗?
【发布时间】:2018-03-06 18:23:29
【问题描述】:

我是 Django 新手。我有一个项目,它有 2 个子应用程序:“访问”和“主要”。错误位于导航栏 href 中的 base.html 文件中。 我面临没有找到反向匹配错误。

main/base.html:

    {%load staticfiles%}

    <link href="{%static "main/vendor/bootstrap/css/bootstrap.min.css"%}" rel="stylesheet">


    <link href="{%static "main/css/small-business.css"%}" rel="stylesheet">

  </head>

<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
      <div class="container">
        <a class="navbar-brand" href="/home.html">Ekyam</a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarResponsive">
          <ul class="navbar-nav ml-auto">
            <li class="nav-item active">
              <a class="nav-link" href='{%url 'main:home'%}'>Home
                <span class="sr-only">(current)</span>
              </a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href='{%url 'main: incubators'%}'>Incubators</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">About</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Services</a>
            </li>
            <li class="nav-item">
              <a class="nav-link" href="#">Contact</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
{%block content%}

{%endblock%}

这是我面临的错误

NoReverseMatch at /home.html

Reverse for ' incubators' not found. ' incubators' is not a valid view function or pattern name.

Request Method:     GET
Request URL:    http://127.0.0.1:8000/home.html
Django Version:     1.11.3
Exception Type:     NoReverseMatch
Exception Value:    

Reverse for ' incubators' not found. ' incubators' is not a valid view function or pattern name.

Exception Location:     C:\Users\my dell\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\resolvers.py in _reverse_with_prefix, line 497
Python Executable:  C:\Users\my dell\AppData\Local\Programs\Python\Python36-32\python.exe
Python Version:     3.6.1
Python Path:    

['C:\\Users\\my dell\\Desktop\\Projects\\junityme'

我们将不胜感激。 网址:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('visit.urls')),
    url(r'^', include('main.urls', namespace='main')),

]

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

urlpatterns = [
    url(r'^', views.home, name='home'),
    url(r'/incubators/', views.incubators, name='incubators'),
    url(r'/about/', views.about, name='about'),
]

我已经发布了 url 文件。如您所见,我已经为“主”应用程序声明了名称空间,以便在 base.html 中引用它。 我在“访问”应用程序中所做的事情我已经设置了注册/登录门户,它将用户重定向到“主”应用程序。登录将解锁应用的主要功能。

views.py:

from django.shortcuts import render
from django.http import HttpResponse


def home(request):
    return render(request, 'main/home.html')


def incubators(request):
    return render(request, 'main/incubators.html')

def about(request):
    return HttpResponse("dsfsddsf")

【问题讨论】:

  • 你后面有一个空格:{%url 'main: incubators'%}.
  • 我仍然遇到同样的错误。 /home.html 没有反向匹配
  • 你能发布你的 urls.py 文件吗?
  • 我已经编辑了问题并提供了更多详细信息
  • 你能发布你的views.py文件吗?

标签: python django


【解决方案1】:

您的网址存在一些问题。进行这些更改不会解决您的特定错误,但您还是应该这样做。

在您的主 urls.py 中,您应该更新您的导入,并删除命名空间:

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('visit.urls')),
    url(r'^', include('main.urls')),

]

在您的main/urls.py 中,添加app_name = 'main',因为您已经从include() 中删除了命名空间。您的正则表达式应以^ 开头并以$ 结尾(不要在include() 中包含$)。正则表达式的开头不应有斜线。

app_name = 'main'

urlpatterns = [
    url(r'^$', views.home, name='home'),
    url(r'^incubators/$', views.incubators, name='incubators'),
    url(r'^about/$', views.about, name='about'),
]

【讨论】:

    【解决方案2】:

    错误报告:

    Reverse for ' incubators' not found.
    

    “孵化器”之前有一个空格,否则会说“孵化器”。 Borut 已经说过了。

    要解决这个问题,您必须使用:

    '{%url 'main:incubators'%}'
    

    而不是

    '{%url 'main: incubators'%}'
    

    我只移除了孵化器前面的空间。你似乎做了同样的事情,但仍然得到错误。在那种情况下,您是否在 'home.html' 中多次使用此行?因为如果你这样做了,你当然必须改变所有的实例。

    如果您正确更改了上面的代码,但仍然遇到同样的错误,就像您说的那样,现在该错误应该看起来有点不同了。现在应该说:

    Reverse for 'incubators' not found. 'incubators' is not a valid view function or pattern name.
    

    注意它现在不应该在“孵化器”前面有初始空间。

    只是想在这里彻底。

    【讨论】:

    • 我能够解决这个错误。但我现在面对的是另一个。我的孵化器(在导航变量中)和关于的 HTML 文件没有显示。就像它显示主页 html 一样,如果您单击同一页面的其他链接,则仅保留 url 更改。我知道这听起来令人困惑。
    • 对不起,我不太明白你的意思。你可以再详细一点吗?通常,当我尝试写下我遇到的问题时,就好像我在向其他人解释它一样,它可以帮助我获得有关如何解决它的新想法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2021-12-13
    相关资源
    最近更新 更多