Django Rest Framework: l'objet 'function' n'a pas d'attribut 'as_view'
J'ai essayé pendant un certain temps pour obtenir une ModelResource ou de travail à l'aide de l'Django Reste du Cadre. Je suis en suivant les exemples, mais le code dans les exemples ne fonctionne pas pour moi. Quelqu'un peut me dire pourquoi j'ai peut-être cette erreur.
views.py
# Create your views here.
from django.http import HttpResponse
from django.utils import simplejson
from django.core import serializers
from djangorestframework.views import View
from djangorestframework.response import Response
from djangorestframework import status
from interface.models import *
def TestView(View):
def get(self, request):
return Person.objects.all()
urls.py
from django.conf.urls.defaults import *
from djangorestframework.resources import ModelResource
from djangorestframework.views import ListOrCreateModelView, InstanceModelView, View
from interface.models import *
from interface.views import *
class PersonResource(ModelResource):
model = Person
ordering = ('LastName')
urlpatterns = patterns('',
url(r'^$', 'interface.views.index'),
url(r'^testview/$', TestView.as_view()),
url(r'^people/$', ListOrCreateModelView.as_view(resource=PersonResource)),
)
Je suis maintenant l'erreur "fonction" de l'objet n'a pas d'attribut "as_view'.
source d'informationauteur Aaron
Vous devez vous connecter pour publier un commentaire.
def TestView(View):
devrait êtreclass TestView(View):
. Comme il est, vous définissez une fonction appeléeTestView
qui prend un argument appeléView
-- son corps définit une fonction interne, puis retourneNone
.Puisque c'est la #1 hit sur google pour ce message d'erreur et il y a de plus subtil et plus probablement la cause de la Fpo, je poste ce commentaire ici.
Cette erreur peut également être causé par l'utilisation d'un standard vue décorateur sur une classe en fonction de la vue au lieu de la
__dispatch__
méthode au sein de la vue.À ajouter à Tim Saylor point,
https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/#id1
Je reçois également cette erreur, mais dans mon cas je l'ai résolu avec l'idée suivante.
Cette erreur se produit si vous essayez de remplacer une classe. Qui se produit parfois lorsque vous copiez&coller le code et oubliez pas de changer par exemple le nom de la classe. Mais dans mon cas, c'était un peu différente
Si vous appliquez
@login_required
à une classe, vous recevrez le message d'erreur:‘function’ object has no attribute ‘as_view’
Alors, comment devriez-vous décorer les classes dans Django maintenant?
Pour la classe de base point de vue, vous avez deux options pour la décoration de vos classes.
1) Décoration de l'URLconf
2) la Décoration de la classe
Les deux options aboutit au même résultat - la restriction de l'accès à une classe uniquement pour les utilisateurs enregistrés. La différence entre les options est la façon dont le décorateur est appliquée à l'instance de classe.Consultez cette page pour les décorateurs de la mise en œuvre
https://docs.djangoproject.com/en/1.4/topics/class-based-views/#decorating-class-based-views