2017-07-18 54 views
0

我試圖在django 1.9和python 3.5中使用虛擬環境在我的域中創建一個博客。所以在pythonanywhere上部署。我能夠呈現HTML。這是回溯。模板在pythonanywhere上部署時不存在錯誤

Request Method: GET
Request URL: http://www.example.com/

Django Version: 1.9
Python Version: 3.5.2
Installed Applications:

['django.contrib.admin', `  
` 'django.contrib.auth', ` 
`'django.contrib.contenttypes',`   
`'django.contrib.sessions',`  
`'django.contrib.messages',`  
`'django.contrib.staticfiles',`  
`'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:

Using engine django: 
* django.template.loaders.app_directories.Loader:  
/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/admin/templates/blog/templates/blog/post/list.html(Source does not exist) 
* django.template.loaders.app_directories.Loader: 
/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/auth/templates/blog/templates/blog/post/list.html(Source does not exist) 
* django.template.loaders.app_directories.Loader: 
/home/pdlsaroj22/myblog/mysite/blog/templates/blog/templates/blog/post/list.html (Source does not exist) 

Using engine django: 
* django.template.loaders.app_directories.Loader: 
/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/admin/templates/blog/post_list.html (Source does not exist) 
* django.template.loaders.app_directories.Loader: 
/home/pdlsaroj22/.virtualenvs/venv/lib/python3.5/site-packages/django/contrib/auth/templates/blog/post_list.html (Source does not exist) 
* django.template.loaders.app_directories.Loader: 
/home/pdlsaroj22/myblog/mysite/blog/templates/blog/post_list.html (Source does not exist) 

回溯:

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

我views.py看起來是這樣的:

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

什麼是您的模板設置?看起來你已經將目錄硬編碼到本地主目錄。 –

+0

請問您可以告訴我您的settinsg.py文件 – ammy

+0

另外,您的list.html文件的位置是什麼? – karthikr

回答

2

如果妳有一個叫做博客(在你的settings.py註冊)應用程序,你必須在APP_DIR設置爲true下模板目錄settings.py,那麼很可能你的博客應用程序中有一個名爲templates的目錄,另一個目錄是模板中的博客。

如果是這種情況,那麼blog/templates/blog/post/list.html實際上應該寫爲:post/list.html,前提是您在博客應用程序的博客目錄中有帖子目錄。

+0

如果這樣可以解決問題,請將其標記爲正確答案,否則提供更新。 –

0

您必須創建一個名爲"templates"的文件夾,其中settingd.py駐留,並將.html文件放入此模板文件夾中。並在以下settings.py文件的變化:

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', 
      ], 
     }, 
    }, 
] 

而在你的代碼做修改如下:

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

希望你這個答案的幫助。