我正在关注this建议,似乎已经破坏了我的模板加载。
我的'settings.py'中的目录声明:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'gantt_charts\\templates\\gantt_charts')]
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
]
我的应用的Views.py:
def project_list(request):
projects = Project.objects.filter(tasks__isnull=False).order_by('updated_date').distinct()
return render(request, 'project_list.html', {'projects':projects})
def project_detail(request,project_id):
projects = get_object_or_404(Project,pk=project_id)
return render(request,'project_detail.html',{'projects':projects})
我的应用urls.py
urlpatterns = patterns('',
url(r'^(?:project)?/?$', views.project_list),
url(r'^project/(?P<project_id>\d+)/\w{0,50}',views.project_detail),
)
我的project_list.html(位于gantt_charts\\templates\\gantt_charts
内):
{% extends 'base.html'%}
{% block content %}
{% load humanize %}
{% load staticfiles %}
{% for project in projects|slice:":3"%}
<div class="project">
<h3>
<a href="project/{{project.id}}/{{project.slug}}" title="Created {{project.created_date|naturaltime}}">{{project.title}}</a>
</h3>
<ul>
{% for task in project.tasks.all|slice:":3" %}
<li>{{task.title}}</li>
{% empty %}
<li>No tasks in this project</li>
{% endfor %}
</ul>
</div>
{% endfor %}
{% endblock content %}
我的base.html模板(位于templates
):
{% load humanize %}
{% load staticfiles %}
<html>
<head>
<!-- external includes -->
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<!-- local includes -->
<link rel="stylesheet" href="{% static 'css/site.css' %}">
<title>gAnttlr - Gantt charts</title>
</head>
<body>
<div class="page-header fixed-div">
<h1>gAnttlr</h1>
<img src ="{%static 'svg/antler3.svg'%}" class="antler-icon fit-div" alt="Medium sized antler">
</div>
</div>
<div class="content container">
<div class="row">
<div class="col-md-8">
{% block content %}
{% endblock %}
</div>
</div>
</div>
<div class="push"></div>
<div id="footer" class="muted">
<p>
gAnttlr logo derived from 'Vectorised' by Yug (Nordisk familjebok (1911), vol.15, p.19 [1]) [Public domain], <a href="http://commons.wikimedia.org/wiki/File%3AKronhjortshornets_utveckling%2C_Nordisk_familjebok.svg">via Wikimedia Commons</a>
</p>
</div>
</body>
</html>
以下是我认为应该发生的事情:
r'^(?:project)?/?$
的网址时(localhost/
或localhost/project
)
views.project_list
然后去那里,project_list.html
,在TEMPLATE_DIRS上查找,然后找到它。project_list.html
中看到它需要涉及base.html
,在TEMPLATE_DIRS上查找,然后找到它。我得到的是只是 base.html页面,没有别的。我不明白为什么会这样。我能想到的是,它试图在project_list.html
目录中找到'templates'
,而不是找到它而只是放弃。有趣的是,如果我将base的位置指定为'base.html'
之外的任何内容(就像在前面添加dir一样,那么它会抛出错误并且不会呈现任何内容。
为什么django没有加载project_list.html
代替{% block content %}{% endblock %}
元标记?
答案 0 :(得分:0)
我遵循的建议是改变我的BASE_DIR指向的地方还有一个令人遗憾的效果,告诉django我的数据库也已经移动了,因为它相对于BASE_DIR。
我已经解决了这个问题并使其成为一个不变的&#39;与我的其他* _DIR变量在同一个地方,所以我可以跟踪它的变化。
我还在for循环中添加了{% empty %}
块,以便将来提醒我。