django 在pythonanywhere上部署时模板不存在错误

bwleehnv  于 2023-08-08  发布在  Go
关注(0)|答案(3)|浏览(151)

我试图在我的域中创建一个博客,使用django 1.9和python 3.5与虚拟环境。在部署Python Anywhere时。我可以渲染HTML。这里是traceback。
第一个月
Request URL: http://www.example.com/
Django Version: 1.9
Python Version: 3.5.2
Installed Applications:

  1. ['django.contrib.admin', `
  2. ` 'django.contrib.auth', `
  3. `'django.contrib.contenttypes',`
  4. `'django.contrib.sessions',`
  5. `'django.contrib.messages',`
  6. `'django.contrib.staticfiles',`
  7. `'blog']``

字符串
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template loader postmortem
Django tried loading these templates, in this order:

  1. Using engine django:
  2. * django.template.loaders.app_directories.Loader:
  3. /home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/admin/templates/blog/templates/blog/post/list.html(Source does not exist)
  4. * django.template.loaders.app_directories.Loader:
  5. /home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/auth/templates/blog/templates/blog/post/list.html(Source does not exist)
  6. * django.template.loaders.app_directories.Loader:
  7. /home/pdlsaroj22/myblog/mysite/blog/templates/blog/templates/blog/post/list.html (Source does not exist)
  8. Using engine django:
  9. * django.template.loaders.app_directories.Loader:
  10. /home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/admin/templates/blog/post_list.html (Source does not exist)
  11. * django.template.loaders.app_directories.Loader:
  12. /home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/auth/templates/blog/post_list.html (Source does not exist)
  13. * django.template.loaders.app_directories.Loader:
  14. /home/pdlsaroj22/myblog/mysite/blog/templates/blog/post_list.html (Source does not exist)


回溯:

  1. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  2. response = `self.process_exception_by_middleware(e, request)
  3. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/core/handlers/base.py" in get_response
  4. response = response.render()
  5. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/template/response.py" in render
  6. self.content = self.rendered_content
  7. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/template/response.py" in rendered_content
  8. template = self._resolve_template(self.template_name)
  9. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/template/response.py" in _resolve_template
  10. new_template = self.resolve_template(template)
  11. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/template/response.py" in resolve_template
  12. return select_template(template, using=self.using)
  13. File "/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/template/loader.py" in select_template
  14. raise TemplateDoesNotExist(', '.join(template_name_list), chain=chain)
  15. Exception Type: TemplateDoesNotExist at /
  16. Exception Value: blog/templates/blog/post/list.html, blog/post_list.html


我的views.py看起来像这样:

  1. class PostListView(ListView):
  2. queryset = Post.published.all()
  3. context_object_name = 'posts'
  4. paginate_by = 3
  5. template_name = 'blog/templates/blog/post/list.html'

aemubtdh

aemubtdh1#

如果你有一个名为blog的应用程序(在settings.py中注册),并且你在settings.py中的模板目录下将APP_DIR设置为true,那么很可能你的blog应用程序中有一个名为templates的目录,而在templates中有另一个名为blog的目录。
如果是这样的话,那么blog/templates/blog/post/list.html实际上应该写成:post/list.html前提是您在博客应用程序的博客目录中有一个post目录。

nwsw7zdq

nwsw7zdq2#

你必须使文件夹命名为"templates"settingd.py驻留,并把你的.html文件在这个模板文件夹.并在以下settings.py文件中进行更改:

  1. TEMPLATES = [
  2. {
  3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  4. 'DIRS': [os.path.join(BASE_DIR, 'templates'), ],
  5. 'APP_DIRS': True,
  6. 'OPTIONS': {
  7. 'context_processors': [
  8. 'django.template.context_processors.debug',
  9. 'django.template.context_processors.request',
  10. 'django.contrib.auth.context_processors.auth',
  11. 'django.contrib.messages.context_processors.messages',
  12. ],
  13. },
  14. },
  15. ]

字符串
在你的代码中做如下修改:

  1. class PostListView(ListView):
  2. queryset = Post.published.all()
  3. context_object_name = 'posts'
  4. paginate_by = 3
  5. template_name = 'list.html'


希望这个答案对你有帮助。

展开查看全部
ppcbkaq5

ppcbkaq53#

您只需重定向到正确的模板目录。我的模板是在文件夹'templates'在根文件夹(同一文件夹包含manage.py).
此设置显示了相同的错误:

  1. 'DIRS': ['templates'],

字符串
所以,我把它改成了这个:

  1. 'DIRS': ['appointment/templates'],


而且成功了!顺便说一句,“约会”是我项目的名字。
在pythonanywhere中,你应该在/前面加上你的项目名,因为那个文件夹就是你的新家。

相关问题