0

I am new to python and flask, trying learning by building a restful customer database, so this is in dataModels.py:

very plain:

class Customer(object):
    def __init__(self, pID, name, address, email, custNO, agent ):
        self.pID = pID
        self.name = name
        self.address =address
        self.email = email
        self.custNO = custNO
        self.agent = agent

class CustomerList(list):
    def addCustomer(self, pID, name, address, email, custNO, agent):
        self.append((false, pID, name, address, email, custNO, agent))
    def custCount(self):
        return len (self)

this is in views.py:

api.add_resource(CustomerList, '/customer')

I am getting a "AttributeError: type object 'CustomerList' has no attribute 'as_view'" error. What am I missing?

I appreciate the help.

1 Answer 1

1

Flask-Restful expects that you will pass it a subclass of flask.ext.restful.Resource but you are passing it a class that is not a subclass of Resource and which does not provide an as_view method (which comes from flask.views.View, which restful.Resource is itself a subclass of).

You will want to make both Customer and CustomerList Customers Resource sub-classes:

class Customer(Resource):
    def __init__(self, p_id, name, address, email, customer_number, agent):
        self.p_id = p_id
        self.name = name
        self.address = address
        self.email = email
        self.customer_number = customer_number
        self.agent = agent

class Customers(Resource):
    def __init__(self, *args, **kwargs):
        super(Customers, self).__init__(*args, **kwargs)
        self._customer_list = []

    def add_customer(self, p_id, name, address, email, customer_number, agent):
        customer = Customer(p_id, name, address, email, customer_number, agent)
        self._customer_list.append(customer)

    def __len__(self):
        return len(self._customer_list)

Take a look at the documentation's quickstart full example for a fuller example of what you are trying to do.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.