无法加载 Django 模板

Posted

技术标签:

【中文标题】无法加载 Django 模板【英文标题】:Not able to load Django template 【发布时间】:2015-11-10 04:14:49 【问题描述】:

这里有一个奇怪的问题。我的应用程序中有两个名为 app 的模板。 base.htmlview.html。我的 base.html 页面中有一个按钮可以导航到我的 view.html。面临的问题是,当我单击 base.html 页面中的按钮时,view.html 页面未显示(即使在 url 中相应更改)。有人可以帮我找出问题吗?提前致谢。

我的文件夹和文件:

我的观点.py

from django.shortcuts import render
from django.views.generic.detail import DetailView
from django.utils import timezone
from django.views import generic
def home(request):
    return render(request, "base.html", )
class DetailView(generic.DetailView):
    template_name = 'app/view.html'

和 urls.py

from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from app.views import DetailView
urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'$', 'app.views.home', name='home'),
    url(r'^view/', DetailView.as_view(), name='view'),
] + static(settings.STATIC_URL, document_root=settings.STATIC_URL)

和我在 base.html 中的按钮

% load staticfiles %
#<img src="% static "my_app/myexample.jpg" %" />#
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <meta name="description" content="">
    <meta name="author" content="">
    <link rel="icon" href="../../favicon.ico">
    <title>Parasol.</title>
      <link href="%  static 'css/bootstrap.min.css' %" rel="stylesheet">
      <link href="%  static 'css/navbar-static-top.css' %" rel="stylesheet">
      <link href="%  static 'css/style.css' %" rel="stylesheet">
    <link href="navbar-static-top.css" rel="stylesheet">
    <script src="../../assets/js/ie-emulation-modes-warning.js"></script>
  </head>
  <body>
    <nav class="navbar navbar-default navbar-static-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
          </button>
          <a class="navbar-brand" href="#">Parasol.</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Photos <span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="#">Action</a></li>
              </ul>
            </li>
          </ul>
          <ul class="nav navbar-nav navbar-right">
            <li><a href="../navbar/">Timeline</a></li>
            <li class="active"><a href="./">Quotes<span class="sr-only">(current)</span></a></li>
            <li><a href="../navbar-fixed-top/">Friends</a></li>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <div class="container">
      <div class="jumbotron">
        <h1>Heading Heading</h1>
        <p>
<a href="% url 'view' %" class="btn btn-lg btn-primary">Let's go</a>
        </p>
      </div>
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="../../dist/js/bootstrap.min.js"></script>
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
  </body>
</html>

和 view.html

% load staticfiles %

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Chameleon Guys</title>
    </head>
    <body>
    Its just for you dudes!!
    </body>
    </html>

已编辑

根据 Rekwan 的新目录:

【问题讨论】:

显示两个模板中的 html 代码。 编辑了我的问题。谢谢 尝试在模板文件夹下创建一个名为“app”的目录。并将view.html 移动到/templates/app/ 我认为这行不通。因为我已经试过了 【参考方案1】:

DetailView 呈现对象的“详细”视图。 那是dev doc of cbv(class base view) 使用模板视图并尝试

【讨论】:

嗨 Rakwen,我尝试将 view.py 设置为 class GoView(TemplateView): template_name = 'view.html' 和 urls.py url(r'^view/', GoView.as_view()), 并将 base.html 中的按钮设置为 ` Let's go `但是我收到了Reverse for 'view' with arguments '()' and keyword arguments '' not found. 0 pattern(s) tried: []的错误 好的,请将您的 url.py 和您当前的项目目录组织发给我! 请不要忘记 view.py 好的。用新的模板目录更新了我的问题。谢谢 我的 url.py from django.shortcuts import render from django.views.generic import TemplateView from django.utils import timezone # Create your views here. def home(request): return render(request, "app/base.html", ) class TemplateView(TemplateView): template_name = 'app/view.html'【参考方案2】:

我认为问题与模板的位置有关。模板应在templates/appname/templates/view.html 中找到。他们应该由templates/view.html 调用。在您上面提供的 sn-ps 中,您有 templates/appname/view.html

此外,您已导入DetailView,然后继续将您的视图命名为DetailView。我认为这会覆盖导入的类。将您的视图命名为非泛型,以避免潜在的错误。

希望对您有所帮助。

【讨论】:

对不起,我已经通过使用 TemplateView 使用了 Rakwen 的方法。我在他的回答下分享了上面的更新代码。请帮帮我 您是否更正了模板路径?这是第一个要解决的明显问题。【参考方案3】:

答案如下。因为现在我的主页视图正在寻找各种字符。

url(r'^$', 'app.views.home', name='home'),

【讨论】:

以上是关于无法加载 Django 模板的主要内容,如果未能解决你的问题,请参考以下文章

外键 id 无法加载到 Django 模板的下拉列表中

Django 从嵌套应用程序加载模板标签无法正常工作

Django模板继承后出现logo图片无法加载的问题

Django 应用程序无法正确加载 Twitter bootstrap 3 模式

多个 Django 模板加载器

我无法从 JQuery ajax 调用中加载部分 Django 模板