我是 Django 的新手,到目前为止我的所有项目都使用了通用 View 。我在 url.py 代码中用
调用了它们patterns(r'^url$',DetailView.as_view())
但是,现在我正在尝试创建自己的基于类的 View ,但遇到了麻烦。我尝试做一个简单的测试,从我的 View 中调用 model.py 函数,但我得到一个错误,我没有实例化该类的实例。我应该如何实例化 View 类?另外,为什么我在调用 DetailView.as_view() 时没有得到同样的错误 DetailView 类也没有实例化,对吧?
我的代码:
模型.py
class Post(models.Model):
title = models.CharField(max_length=140)
body = models.TextField()
def __unicode__(self):
return self.title
def getBody(self):
return self.body
View .py
class RatingView(generic.DetailView):
model = Post
template_name = "like.html"
def __init__(self):
model = Post
template_name = "like.html"
def modelFuncTest(self):
return HttpResponse(self.model.getBody())
网址.py
from django.conf.urls import patterns, include, url
from django.views.generic import ListView, DetailView
from blog.views import RatingView
from blog.models import Post
urlpatterns = patterns('',
url(r'^(?P<pk>\d+)/like/$', RatingView.modelFuncTest()),
)
最佳答案
将您的 views.py 更改为:
class RatingView(generic.DetailView):
model = Post
template_name = "like.html"
并将 urls.py 更改为:
from django.conf.urls import patterns, url
from blog.views import RatingView
urlpatterns = patterns('',
url(r'^(?P<pk>\d+)/like/$', RatingView.as_view()),
)
这应该让你开始了,如果在进行这些更改后出现错误,请告诉我。
django docs 中有一些很好的例子如果您还没有看到它们。
编辑:另外,在模板中,你应该让你的 body 像这样:
{{ post.body }}
基于类的 View 的美妙之处在于,您的对象的上下文会为您传递。
关于python - 在 Django 中实例化 View 类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27682574/