先把views.py url.py html 写出来 ,有利于更好的理解Django class based views
views.py
from django.shortcuts import render,render_to_response
from django.views.generic.base import TemplateView
from django.http import HttpResponse
from django.contrib.auth import decorators
from django.utils.decorators import method_decorator
class HelloView(TemplateView):
def get(self,request):
return HttpResponse('hello kity!!!')
class GreetingView(TemplateView):
greeting = "Good day !!!"
def get(self,request):
return HttpResponse(self.greeting)
class MorningGreetingView(GreetingView): #继承GreetingView
greeting = "Morning to you !!!"
class MengView(TemplateView):
template_name = "meng.html"
def dispatch(self,*args,**kwargs):
return super(MengView,self).dispatch(*args,**kwargs)
urls.py
from django.conf.urls import include, url, patterns
from django.contrib import admin
from dahuilang.views import HelloView,GreetingView,MorningGreetingView,MengView
urlpatterns = patterns ('',
#url(r'^admin/', include(admin.site.urls)),
url(r'^hello/$',HelloView.as_view(),name='hello',),
url(r'^world/$',GreetingView.as_view(greeting = "Good day !!!"),),
url(r'^good/$',MorningGreetingView.as_view(),name='good',),
url(r'^meng/$',MengView.as_view(),name='meng',),
)
meng.html
<html>
<head>
<meta charset="utf-8">
<title>
for a test
</title>
</head>
<body>
<h1> Good day !!!</h1>
</body>
</html>
此时运行时结果可能会出现TemplateDoesNotExist错误
解决办法,
修改settings.py 中
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ‘ ‘,
'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',
],
},
},
]
的 'DIRS': ‘ ‘,部分,
结果如下
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',
],
},
},
]