error: template does't exist

error: template does't exist

您好,我正在尝试在 Django 中登录,但是当我在 urls.py 中实例化 Django 的登录视图并传递我的模板时,我遇到了这个错误: TemplateDoesNotExist 在 /login/ 使用引擎 Django: django.template.loaders.filesystem.Loader:

C:\Users\sdand\Documents\envganagro\templates\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\sdand\Documents\envganagro\lib\site-packages\django\contrib\admin\templates\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\sdand\Documents\envganagro\lib\site-packages\django\contrib\auth\templates\login.html (Source does not exist)
django.template.loaders.app_directories.Loader: C:\Users\sdand\Documents\envganagro\ganagroapp\templates\login.html (Source does not exist)

但是您如何在这张图片中看到:

模板存在于ganagroapp/templates/ganagroapp

我的ganagro/urls.py是这样的:

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

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

    ]

我的ganagroapp/urls.py是这样的:

from django.conf.urls import include, url
from . import views
from django.contrib.auth.views import login

app_name = 'ganagroapp'
urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^product/(?P<pk>[0-9]+)/$', views.product_detail, name='product_detail'),
    url(r'^category/(?P<pk>[0-9]+)/$', views.product_category, name='product_category'),
    url(r'^product/new/$', views.new_product, name='new_product'),
    url(r'^login/$',login,{'template_name':'login.html'}, name='login'),
]

确保包含 django 可以找到您的模板的目录,如下所示:

# your_template_dir_string will depend on where your settings file is in
# relation to this template directory, you'll have to figure that out
# as I can't tell from your linked info
your_template_dir_string = 'ganagroapp/templates/ganagroapp'
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
                 # . . .
                 os.path.join(BASE_DIR, your_template_dir_string),
                 # . . .
        ],
        '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',
                'social_django.context_processors.backends',  #
                'social_django.context_processors.login_redirect',  #
            ],
            'libraries': {
                'content_extras': 'content.templatetags.content_extras',
            }
        },
    },
]

您还可以使用模板加载器,这样您就不必明确指定新的模板目录; app_directories 加载程序在您安装的应用程序中查找名为 "templates" 的目录。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'OPTIONS': {
            'loaders': [
                ('django.template.loaders.app_directories.Loader', ),
                # you can only specify filesystem loaders like below 
                # for template directories NOT contained in an installed
                # app in django 1.11. For example, a template directory 
                # contained in your project directory
                (
                    'django.template.loaders.filesystem.Loader',
                    [os.path.join(BASE_DIR, 'templates')],
                ),
            ],
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'social_django.context_processors.backends',  #
                'social_django.context_processors.login_redirect',  #
            ],
            'libraries': {
                'content_extras': 'content.templatetags.content_extras',
            }
        },
    },
]

另一种方法是在模板-->ganagroapp 中创建一个名为'Registration' 的目录。复制该文件夹中的所有模板。它应该工作。