如何解决在 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')),]
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'),]
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 举报,一经查实,本站将立刻删除。