在 Django 项目中显示来自另一个应用程序的模板时,TemplateDoesNotExist

如何解决在 Django 项目中显示来自另一个应用程序的模板时,TemplateDoesNotExist

我有一个网站,其中包含两个应用程序 dos_website,其中包含主页和主页,以及 blog,其中包含新闻:

ubu@DESKTOP-QL4RO3V:/mnt/c/Users/antoi/Documents/Programming/Work/Dos/webapp$ tree -L 1
.
├── README.md
├── __init__.py
├── blog/
├── db.sqlite3
├── dos_website/
├── firstrecord.json
├── firstrecord.txt
├── manage.py
├── requirements.txt
└── website/

3 directories,7 files

我想访问我网站的博客页面,其地址应该是 http://127.0.0.1:8000/blog/

webapp/dos_website/templates/dos_website/base.html

  <head>

    <Meta charset="utf-8">

  </head>

  <!-- Navigation -->
  <nav class="navbar navbar-expand-lg navbar-light bg-light fixed-top">
    <div class="container">
      <div class="collapse navbar-collapse" id="navbarResponsive">
        <ul class="navbar-nav ml-auto">
          <li>
            <a role="button" href="{% url 'blog:all_blogs' %}" class="btn btn-primary">Actualités</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

</html>

重定向首先由管理此页面的 Web 应用程序的 urls.py 文件处理:

webapp/website/urls.py

from django.contrib import admin
from django.urls import path,include
from dos_website import views
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
    path('admin/',admin.site.urls),# Home
    path('',views.home,name='home'),# blog
    path('blog/',include('blog.urls')),]

因此它被重定向博客应用程序的 urls.py 文件

webapp/blog/urls.py

from django.contrib import admin
from django.urls import path,include
from . import views

app_name = 'blog'

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

这是我在博客应用程序中的 views.py 文件

webapp/blog/views.py

from django.shortcuts import render


def all_blogs(request):
    return render(request,'blog/all_blogs.html')

Sin embargo,tengo un archivo all_blogs.html en mi aplicación de blog:

ubu@DESKTOP-QL4RO3V:/mnt/c/Users/antoi/Documents/Programming/Work/Dos/webapp/blog$ tree -L 3
.
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-39.pyc
│   ├── urls.cpython-39.pyc
│   └── views.cpython-39.pyc
├── admin.py
├── apps.py
├── migrations
│   └── __init__.py
├── models.py
├── templates
│   └── blog
│       └── all_blogs.html   <-- aqui esta
├── tests.py
├── urls.py
└── views.py

但它返回:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/blog/

Django Version: 3.2.4
Python Version: 3.9.4
Installed Applications:
['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dos_website']
Installed Middleware:
['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware']

Template loader postmortem
Django tried loading these templates,in this order:

Using engine django:
    * django.template.loaders.app_directories.Loader: C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\contrib\admin\templates\blog\all_blogs.html (Source does not exist)
    * django.template.loaders.app_directories.Loader: C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\contrib\auth\templates\blog\all_blogs.html (Source does not exist)
    * django.template.loaders.app_directories.Loader: C:\Users\antoi\Documents\Programming\Work\Dos\webapp\dos_website\templates\blog\all_blogs.html (Source does not exist)



Traceback (most recent call last):
  File "C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\core\handlers\exception.py",line 47,in inner
    response = get_response(request)
  File "C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\core\handlers\base.py",line 181,in _get_response
    response = wrapped_callback(request,*callback_args,**callback_kwargs)
  File "C:\Users\antoi\Documents\Programming\Work\Dos\webapp\blog\views.py",line 5,in all_blogs
    return render(request,'blog/all_blogs.html')
  File "C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\shortcuts.py",line 19,in render
    content = loader.render_to_string(template_name,context,request,using=using)
  File "C:\Users\antoi\Documents\Programming\Work\Dos\dos_env\lib\site-packages\django\template\loader.py",line 61,in render_to_string
    template = get_template(template_name,in get_template
    raise TemplateDoesNotExist(template_name,chain=chain)

Exception Type: TemplateDoesNotExist at /blog/
Exception Value: blog/all_blogs.html

解决方法

您的 installed_apps 中没有博客应用:

Installed Applications:
[
 'blog',# <- add your here
 'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dos_website'
]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?