2015-12-11 8 views
6

Ich versuche, Klassen basierte Ansichten zu verwenden, und einen seltsamen Fehler zu erhalten. Die Art und Weise bin ich der Ansicht bin mit scheint die normale Art und Weise zu sein:'Funktion' Objekt hat kein Attribut 'as_view'

Zutaten/models.py:

from django.db import models 
from django.utils import timezone 


class Ingredient(models.Model): 
    name  = models.CharField(max_length=255) 
    description = models.TextField() 

    def get_prices(): 
     purchases = self.purchase_set.all() 
     prices  = [purchase.price for purchase in purchases] 

Zutaten/views.py:

from django.shortcuts   import render, render_to_response, redirect 
from django.http    import HttpResponse, HttpResponseRedirect 
from django.views.generic.edit import CreateView 
from .models     import Ingredient, Purchase 

def IngredientCreateView(CreateView): 
    model = Ingredient 
    fields = ['all'] 

Zutaten/urls.py :

from django.conf.urls import patterns, include, url 

from ingredients.views import IngredientCreateView 

urlpatterns = patterns('',    
    url(r'^new_ingredient$',   IngredientCreateView.as_view(),    name='new-ingredient'), 
) 

ich

AttributeError at /ingredients/new_ingredient 
'function' object has no attribute 'as_view' 

Ich bin auf Django 1.8.5. Warum wird diese Ansicht nicht funktionieren? Danke

Antwort

14

IngredientCreateView sollte eine Klasse sein. So Ihre views.py ersetzen:

def IngredientCreateView(CreateView): 

mit:

class IngredientCreateView(CreateView): 
3

IngredientCreateView eine Funktion ist, keine Klasse.

Die folgende Zeile

def IngredientCreateView(CreateView): 

mit

class IngredientCreateView(CreateView): 
+1

deren erste war IDK ersetzen werden sollte, aber es Ihnen danken. alte Gewohnheiten sterben schwer, ich muss mich an Klassenansichten gewöhnen :) – codyc4321

Verwandte Themen