web-dev-qa-db-ja.com

「関数」オブジェクトには属性「as_view」がありません

クラスベースのビューを使用しようとしていますが、奇妙なエラーが発生します。私がビューを使用している方法は、通常の方法のようです:

materials/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]

materials/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']

materials/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'),
)

私は得る

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

Django 1.8.5。このビューが機能しないのはなぜですか?ありがとうございます

16
codyc4321

IngredientCreateViewはクラスでなければなりません。あなたのviews.pyは置き換えます:

def IngredientCreateView(CreateView):

で:

class IngredientCreateView(CreateView):
26
Anush Devendra

IngredientCreateViewは関数であり、クラスではありません。

次の行

def IngredientCreateView(CreateView):

に置き換える必要があります

class IngredientCreateView(CreateView):
6
falsetru