python - 在 Django 中实例化 View 类时出错

标签 python django class view instance

我是 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/

相关文章:

python - Django正则表达式匹配长url

python - 两个Python类实例相互引用

python - 如何在 python 中将列表中的元素移动到末尾

python - 如何在每个项目的基础上而不是在系统范围内安装 python 模块?

python - 试图理解 python,为什么这个函数不起作用? [添加公式]

python - 下一个查询参数不适用于 facebook 登录的 django allauth

python - 如何根据另一列对数据框列进行切片

python - 主题标签的正则表达式打印出每个字母

java - sum() 方法有问题

objective-c - cocoa 文本字段返回 null