您的位置:

django有Http404(_("App %(app_label)r not found") % self.kwargs)报错是怎么回事

  发布时间:2023-04-04 08:28:51
报错的原因Http异常是 Django 通常在找不到相应内容时抛出的异常,如果你看到这个异常就是说Django找不到对应的App。这种情况通常发生在你提供了错误的 app_label 或者你的应用程序没有被添加到 INSTALLED_APPS 列表中。如果你定义的路由中的app_name 不存在对应的app 也会抛出这个异常需要检查你定义的路由中的 app_name 与你的 app 是否相同。需要注意的是当你重命名你的app时,要在settings.py里面的INSTALLED_APPS里面更新相关的名称,并在你的url路由里面的app_name也要相应的更新。并且在 urls.py 中定义了 app_name 为'myapp'。

报错的原因

Http404 异常是 Django 通常在找不到相应内容时抛出的异常,如果你看到 Http404(_("App %(app_label)r not found") % self.kwargs) 这个异常就是说Django找不到对应的App。

这种情况通常发生在你提供了错误的 app_label 或者你的应用程序没有被添加到 INSTALLED_APPS 列表中。

检查你的项目的 settings.py 文件,确保你的应用程序名称被正确地添加到 INSTALLED_APPS 列表中。


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'your_app_name'
]

另外,需要注意的是这个异常也可能在你使用了 url 路由的时候出现。如果你定义的路由中的app_name 不存在对应的app 也会抛出这个异常


from django.urls import path

app_name = 'not_exist_app_name'

urlpatterns = [
    path('', views.index, name='index'),
]

需要检查你定义的路由中的 app_name 与你的 app 是否相同。

如何解决

解决这个问题的方法是确保你的应用程序被正确地添加到 INSTALLED_APPS 列表中并且配置正确。

当使用url路由时,确保你定义的路由中的app_name正确。

需要注意的是当你重命名你的app时,要在settings.py里面的INSTALLED_APPS里面更新相关的名称,并在你的url路由里面的app_name也要相应的更新。

如果您仍然无法解决问题,请检查您的代码以确保所有路径和引用都是正确的,并确保没有拼写错误。

如果问题仍然存在,请提供更多信息,如错误消息,代码示例等,我将会提供更详细的帮助。

使用例子

是的,下面是一个示例。这个例子是通过在应用程序中添加应用程序名称来解决 Http404(_("App %(app_label)r not found") % self.kwargs) 错误的


# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp'
]

# urls.py
from django.urls import path
from myapp import views

app_name = 'myapp'  # 正确的 app_name

urlpatterns = [
    path('', views.index, name='index'),
]

这个例子中,我们在 settings.py 中添加了 myapp 到 INSTALLED_APPS 列表中。 并且在 urls.py 中定义了 app_name 为'myapp'。这样就能避免出现 Http404(_("App %(app_label)r not found") % self.kwargs) 错误了。

还有,在模板中使用url的时候,你需要使用 {% url 'app_name:url_name' arg1 arg2 %}这样的格式,这样才能正确调用对应的路由


myapp index