我是Django的新手,迄今爲止我的所有項目都使用了通用視圖。我叫他們在url.py代碼錯誤實例化Django中的視圖類
模式(R '^ $ URL',DetailView.as_view())
不過,現在我試圖使自己的基於類的觀點,並且遇到麻煩。我嘗試了一個簡單的測試,從我的視圖中調用model.py函數,但是我得到一個錯誤,我沒有實例化類的一個實例。我應該如何實例化視圖類?另外,如何在調用DetailView.as_view()時不會得到相同的錯誤,DetailView類也沒有實例化,對吧?
我的代碼:
models.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())
url.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()),
)
我知道這會工作,但您從來沒有調用modelFuncTest(),這是我試圖解決的問題。我知道這個例子並不需要它被調用來工作,但我試圖在做更多的事情之前在更小的範圍內測試來自不同類的調用方法。 – Oblivionkey3
@ Oblivionkey3如果您試圖在模型上完成調用getBody()函數,那麼在模板類型{{post.getBody}}中將會返回您的body。你不應該這樣認爲。 – awwester
如果你堅持從你的url文件中調用這個函數,那只是一個不好的做法,我對此沒有任何評論:) – awwester