首页 > 解决方案 > 多应用程序 django 项目中的应用程序渲染空白模板

问题描述

我有一个简单的 CRUD 应用程序,当我将其作为项目中唯一的应用程序进行测试时,它会呈现其所有模板。但是,它向我显示了一个空白模板,对于相同的模板,当我将其添加到带有登录/退出应用程序的项目中时(以便有两个应用程序一起使用),我确信它是我忽略的东西,但我无法解决. 帮助!

All 适用于模板文件夹中的模板,并且是项目中的默认应用程序。我使用标准的 settings.py,模板部分在下面。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['templates',],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

网址也很简单,如下所示

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

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

模板位于应用程序/模板文件夹中

因此,我可以因此调用页面 /conform/conform/view_name/ 并且它工作正常。

但是,如果我创建一个新项目并添加一个登录/注销应用程序以及一致性应用程序。在登录应用程序中,我向经过身份验证的用户提供了一个导航栏,其中包含指向一致应用程序中模板页面的菜单链接。

当我点击它时,我得到一个空白页!地址显示视图的正确 URL,但不显示任何内容。我更改了其中一个模板中的文本,以确认该应用程序没有找到它,而且似乎确实如此。

多应用 settings.py 模板部分:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
         'DIRS': [TEMPLATE_DIR,],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

在这种情况下,我在项目文件夹下有一个模板文件夹,其中有两个文件夹,每个文件夹都以应用程序命名。

我试过移动它们,甚至把它们放回应用程序文件夹,但它仍然显示一个空白屏幕。

这是项目文件夹的树:

── conform
│   ├── migrations
│   │   └── __pycache__
│   ├── __pycache__
│   └── templates
│       └── conform
├── key
│   ├── migrations
│   │   └── __pycache__
│   └── __pycache__
├── media
│   └── profile_pics
├── static
│   └── images
├── templates
│   └── key
└── therapy
    └── __pycache__

其中 conform 和 key 是治疗项目中的两个应用程序。

附加信息!!

我可以确认该应用正在查找模板。所以这不是配置问题。当我重命名模板文件时;说从 a.html 到 b.html,django 抱怨它无法找到它。

所以这是一个http类型的问题。这是我正在使用的索引页面。

{% extends "key/base.html" %}
{% load staticfiles %}
{% block body_block %}


   <nav class="navbar navbar-default navbar-static-top">
      <div class="container">
        <ul class="nav navbar-nav">


          {% if user.is_authenticated %}
          <li><a class="navbar-brand" href="{% url 'conform:conform_staff_create' %}">Add Staff</a></li>
          <li><a class="navbar-link" href="{% url 'conform:conform_staff_list' %}">List Staff</a></li>
          <li><a class="navbar-link" href="{% url 'admin:index' %}">Admin</a></li>
          {% else %}
            <li><a class="navbar-link" href="{% url 'key:user_login' %}">Help</a></li>
          {% endif %}

        </ul>
      </div>
    </nav>

<div class="container">
 <div class="alert alert-info">

    {% if user.is_authenticated %}
    <h2>Hello {{ user.username }}</h2>
    <h2>Welcome to !</h2>
    <strong>Success!</strong>     
    {% else %}
        <h3>Login with a valid <strong>username</strong> and <strong>password</strong> to begin.</h3>
    {% endif %}
  </div>
</div>

{% endblock %}

当单击“列表人员”的链接时,应该显示以下模板,但它显示为空白!谁能解释为什么?

{% extends "keys/base.html" %}
{% load static %}
{% block content %}
<p><a class="btn btn-default" href="{% url 'conform_staff_list' %}">Staff Listing</a></p>
<table class="table">
<tr>
<td>ID</td><td>Link</td>
    <td>name</td>
    <td>address</td>
    <td>city</td>
    <td>postcode</td>
    <td>county</td>
    <td>country</td>
    <td>telephone</td>
    <td>email</td>
</tr>
{% for object in object_list %}
<tr>
    <td>{{object.pk}}</td>
    <td><a href="{{object.get_absolute_url}}">{{object}}</a></td>
    <td>{{ object.name }}</td>
    <td>{{ object.address }}</td>
    <td>{{ object.city }}</td>
    <td>{{ object.postcode }}</td>
    <td>{{ object.county }}</td>
    <td>{{ object.country }}</td>
    <td>{{ object.telephone }}</td>
    <td>{{ object.email }}</td>
</tr>
{% endfor %}
</table><a class="btn btn-primary" href="{% url 'conform_staff_create' %}">Create new Staff</a>
{% endblock %}

标签: djangodjango-templates

解决方案


推荐阅读