Django - 教程 - 设置IndexView但获取TemplateDoesNotExist

时间:2018-05-15 21:05:17

标签: django angular

我已经在TemplateDoesNotExist上搜索了所有问题。 我也在进行大约12个小时的故障排除。 有一些我不理解的东西。我是django的新手。

我正在关注以下Thinkster教程: Building Web Applications with Django and AngularJS

这是错误:

异常位置: C:\ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ template \ loader.py in select_template,第47行

例外类型: TemplateDoesNotExist

例外值: 的index.html

    

模板加载器postmortem

        Django尝试按以下顺序加载这些模板:

            使用引擎django

            
                            
  • django.template.loaders.app_directories.Loader:C:\ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ contrib \ admin \ templates \ index.html(来源不存在)< / LI>                         
  • django.template.loaders.app_directories.Loader:C:\ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ contrib \ auth \ templates \ index.html(来源不存在)< / LI>                         
  • django.template.loaders.app_directories.Loader:C:\ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ rest_framework \ templates \ index.html(来源不存在)
  •             

这个IndexView代码我不明白,我相信问题出在哪里。本教程不会介绍此代码。我认为这是改变index.html或如何找到它的原因。这是在我的views.py中,并且是我的urls.py所在的项目文件夹。

views.py

from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.generic.base import TemplateView
from django.utils.decorators import method_decorator

class IndexView(TemplateView):
    template_name = 'index.html'

    @method_decorator(ensure_csrf_cookie)
    def dispatch(self, *args, **kwargs):
        return super(IndexView, self).dispatch(*args, **kwargs)

url.py

from django.contrib import admin
from django.urls import path, re_path, include
from rest_framework_nested import routers
from authentication.views import AccountViewSet
from HawkProject.views import IndexView

router = routers.SimpleRouter()
router.register(r'accounts', AccountViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^api/v1/', include(router.urls)),

    re_path(r'^.*$', IndexView.as_view(), name='index')
]

partial settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

请帮助,谢谢。

编辑:

我在代码中添加了以下内容,我让它立刻不会破坏, 但我不认为这是一个解决方案,而是一个破解或无法维护的黑客攻击。我在Dirs中添加了admin索引的索引,如下所示:

 'DIRS': 
['C:/Users/Workstation333/AppData/Local/Programs/Python/Python36/Lib/site- 
packages/django/contrib/admin/templates/admin'],

我无法在其认为应该存在的目录中找到其他索引文件。 *注意上面目录中的双管理员,不知道为什么会这样。它也使'#34; home&#34;页面直接带我到管理页面。

1 个答案:

答案 0 :(得分:1)

我没有阅读你正在做的教程,但尝试这样做:

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

正如您所看到的,我认为您收到此错误是因为您的模板目录'DIRS'为空,因此Django不知道在哪里搜索'index.html''templates'名称可以更改为您想要的任何名称,但只需根据您在每个应用中保留模板的文件夹对其进行命名。

Django Templates