django错误HomePageView'对象没有属性'META'windows 7

时间:2017-01-05 05:23:29

标签: python django

错误日志:

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>

3 个答案:

答案 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的第一个参数与所有实例方法一样,应为selfrequest作为关键字参数传递。

但请注意,您不应该超越发送。通过这样做,您正在否定使用基于类的视图的所有好处;你也可以使用一个独立的功能。而是将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)