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' 的目录。复制该文件夹中的所有模板。它应该工作。
您好,我正在尝试在 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' 的目录。复制该文件夹中的所有模板。它应该工作。