Django中的“无法找到模板”错误

时间:2015-06-25 10:28:38

标签: python django

我刚开始学习Django。我按照Django网页上的指南进行操作,但仍然觉得不明白。所以我决定自己做类似的事。基本上我正在制作类似于指南的投票系统,但有点不同。所以我开始通过阅读一些文档和指导文本来做到这一点。我创建了一个通用列表视图来显示index.html,它将显示投票列表。 “

这是我的观看代码:

class IndexView(generic.ListView):
    template_name = 'Vote/index.html'
    model = Type

    def get_queryset(self):
        return Type.objects.order_by('-pub_date')

这是我的index.html代码:

{% load staticfiles %}
    <link rel="stylesheet" type="text/css" href="{% static 'Vote/style.css' %}" />
{% block content %}
    <h2>Votings</h2>
    <ul>
        {% for voting in object_list %}
            <li>{{ voting.Type_name }}</li>
        {% empty %}
            <li>Sorry, there are not votes.</li>
        {% endfor %}
    </ul>
{% endblock %}

模型代码:

from django.db import models
from django.utils import timezone

# Create your models here.
class Voted_Object(models.Model):
    Voted_Object_name = models.CharField(max_length=50)
    Voted_Object_image = models.ImageField
    Voted_Object_rating = models.IntegerField(default=0)

class Type(models.Model):
    pub_date = models.DateTimeField
    Type_name = models.CharField(max_length=50)

网址代码:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    #url(r'^(?P<pk>[0-9]+)/results/$', views.ResultsView.as_view(), name='results'),
   # url(r'^(?P<pk>[0-9]+)/voting/$', views.VoteView.as_view(), name='voting'),
]

还有模板设置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_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',
            ],
        },
    },
]

这是我的目录: enter image description here

最后这是错误:

/ Vote /

上的TemplateDoesNotExist
  

投票/ index.html,投票/ type_list.html请求方法:GET请求   URL:http://127.0.0.1:8000/Vote/ Django版本:1.8.2例外   类型:TemplateDoesNotExist异常值:投票/ index.html,   投票/ type_list.html例外   位置:C:\ Users \ Vato \ Envs \ django_test_env \ lib \ site-packages \ django \ template \ loader.py   在select_template中,第76行Python   可执行文件:C:\ Users \ Vato \ Envs \ django_test_env \ Scripts \ python.exe   Python版本:2.7.10 Python路径:   [ 'C:\用户\ Vato \ PycharmProjects \项目3',   'C:\用户\ Vato \ PycharmProjects \项目3',   'C:\ WINDOWS \ SYSTEM32 \ python27.zip',   'C:\用户\ Vato \ ENVS \ django_test_env \的DLL',   'C:\用户\ Vato \ ENVS \ django_test_env \ lib中',   'C:\用户\ Vato \ ENVS \ django_test_env \ LIB \高原双赢',   'C:\用户\ Vato \ ENVS \ django_test_env \ lib中\ lib中-TK',   'C:\用户\ Vato \ ENVS \ django_test_env \脚本',   'C:\ Python27 \ Lib','C:\ Python27 \ DLLs',   'C:\ Python27 \ LIB \ lib中-TK',   'C:\用户\ Vato \ ENVS \ django_test_env',   'C:\用户\ Vato \ ENVS \ django_test_env \ lib中\站点包']

它要求2个模板,一个index.html,我有和我写的,第二个是type_list.html

我认为错误是由于缺少type_list.html文件引起的,但我不明白为什么django要求我提供该模板。 我在代码中的哪个位置指定了它?如何修复它以便程序从数据库获得投票并在索引上显示?

正如我研究的那样,据我所知,第二个模板由于模型(类型)而被查看 - 由于某种原因,小写和_list结束。它是自动生成的,但我不明白。

我不确定在我的代码中,因为从文档中复制了很多,但是我认为它应该没有第二个(type_list)模板。对不起,很长的帖子。思想不应该错过任何代码。

如果您对更好的学习django的方法有任何建议,请随时发表评论。

1 个答案:

答案 0 :(得分:2)

您有'DIRS': [BASE_DIR],,但您的模板不在BASE_DIR中,它们位于BASE_DIR / templates中。你应该:

'DIRS': [os.path.join(BASE_DIR, 'templates')],