错误日志:
error HomePageView' object has no attribute 'META'
urls.py
from django.conf.urls import url
from hello.views import HomePageView
urlpatterns = (
url(r'^$', HomePageView.as_view(), name='home'),
)
views.py
import textwrap
from django.shortcuts import render
from django.utils import timezone
from django.http import HttpResponse
from django.views.generic.base import View
class HomePageView(View):
def dispatch(request, *args, **kwargs):
c = {}
return render(request, 'welcome.html', c)
welcome.html
<html>
<head>
<title>Greetings to Django</title>
</head>
<body>
<h1 style="color:green;" align="center">Greetings to the world of Django Web Framework </h1>
</body>
</html>
答案 0 :(得分:1)
由于您已经被称为按名称查看,因此您只需导入所有视图就可以了得更好:
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$',HomePageView.as_view(), name='home'),
]
主要是我们使用camelcase将视图名称定义为: homePageView()
请仔细阅读。 https://docs.djangoproject.com/en/1.10/intro/tutorial01/#url-argument-name
答案 1 :(得分:1)
dispatch
的第一个参数与所有实例方法一样,应为self
。 request
作为关键字参数传递。
但请注意,您不应该超越发送。通过这样做,您正在否定使用基于类的视图的所有好处;你也可以使用一个独立的功能。而是将TemplateView子类化,将template_name
设置为类属性,并在实际需要将一些数据传递给模板时定义get_context_data
。
答案 2 :(得分:0)
在您的 views.py 文件中,您需要在类函数中使用 self
作为参数。
将此行 def dispatch(request, *args, **kwargs):
更改为 def dispatch(self, request, *args, **kwargs):
class HomePageView(View):
def dispatch(self, request, *args, **kwargs):
c = {}
return render(request, 'welcome.html', c)