2015-09-21 6 views
2

Я получаю ошибку импорта. он говорит, что нет модуля с именем HelloTemplate. но есть класс HelloTemplate, который я импортировал в файле urls.py. «login» - это мое имя приложения django.нет модуля с именем Ошибка импорта HelloTemplate

это мой view.py файл.

#from django.shortcuts import render 
from django.http import HttpResponse 
from django.template.loader import get_template 
from django.template import Context 
from django.shortcuts import render_to_response 
from django.views.generic.base import TemplateView 
# Create your views here. 
def hello(request): 
    name='Zeeshan' 
    html="<html><body> hi this is %s.</body></html>" %name 
    return HttpResponse(html) 

def hello_template(request): 
    name='zeeshan' 
    t=get_template('hello.html') 
    html=t.render(Context({'name':name})) 
    return HttpResponse(html) 

class HelloTemplate (TemplateView): 
     template_name="hello_class.html" 

     def get_context_data(self, **kwargs): 
      context=super(HelloTemplate, self).get_context_data(**kwargs) 
      context["name"] = "zee" 
      return context 

это url.py файл ..

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

urlpatterns = [ 
    #url(r'^admin/', include(admin.site.urls)), 
    url(r'^hello/$', 'login.views.hello'), 
    url(r'^hello_template/$', 'login.views.hello_template'), 
    url(r'^hello_class_view/$','HelloTemplate.as_view()'), 
] 

здесь сообщение об ошибке во время работы на локальном сервере.

ImportError at /hello_class_view/ 

No module named HelloTemplate 

Request Method:  GET 
Request URL: http://127.0.0.1:8000/hello_class_view/ 
Django Version:  1.8.4 
Exception Type:  ImportError 
Exception Value:  

No module named HelloTemplate 

Exception Location:  /usr/lib/python2.7/importlib/__init__.py in  import_module, line 37 
Python Executable: /home/grayhat/Documents/python/projects/bin/python 
Python Version:  2.7.6 
Python Path:  

['/home/grayhat/Documents/python/projects/myapp', 
'/home/grayhat/Documents/python/projects/local/lib/python2.7/site-packages/Django-1.8.4-py2.7.egg', 
'/home/grayhat/Documents/python/projects/lib/python2.7/site-packages/Django-1.8.4-py2.7.egg', 
'/home/grayhat/Documents/python/projects/lib/python2.7', 
'/home/grayhat/Documents/python/projects/lib/python2.7/plat-x86_64-linux-gnu', 
'/home/grayhat/Documents/python/projects/lib/python2.7/lib-tk', 
'/home/grayhat/Documents/python/projects/lib/python2.7/lib-old', 
'/home/grayhat/Documents/python/projects/lib/python2.7/lib-dynload', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/home/grayhat/Documents/python/projects/local/lib/python2.7/site-packages', 
'/home/grayhat/Documents/python/projects/lib/python2.7/site-packages'] 

Server time: Mon, 21 Sep 2015 08:06:38 +0000 
+1

Ваши views.py и urls.py в этом же каталоге? –

+0

no оба находятся в другом каталоге. – Zeeshan

+0

views.py находится в каталоге «login», а urls.py находится в каталоге «myapp». – Zeeshan

ответ

4

Сниппет в urls.py'HelloTemplate.as_view()' должен быть HelloTemplate.as_view(). Это без кавычек. Вы можете увидеть больше ссылок на классы, основанные на классе here.

+0

спасибо, что это сработало ..... – Zeeshan

+0

@ user3394251, пожалуйста, отметьте правильный ответ – zanderle

+0

Также вы можете написать ' hellotemplate = HelloTemplate.as_view() 'в views.py и' url (r '^ hello_class_view/$', 'login.views.hellotemplate') 'в urls.py – sinitsynsv

Смежные вопросы