类继承的Flask函数无法正确返回

时间:2014-02-07 20:16:05

标签: python flask

from app import app
import json
from flask.views import MethodView

from flask import request
from flask import url_for

from modules.auth import authenticate

@app.route('/')
def index():
        return app.send_static_file('index.html')


class Authentication(object):
    def __init__(self, request):
        form_data = request.form
        if form_data.get('producer_apikey', None):
            self.producer_data = authenticate(
                form_data['producer_username'], form_data['producer_apikey'], form_data['region'])
        if form_data.get('consumer_apikey', None):
            self.consumer_data = authenticate(
                form_data['consumer_username'], form_data['consumer_apikey'], form_data['region'])

    def do_check(self):
         if self.producer_data.get("msg", None):
             return json.dumps
                 { "message" : self.producer_data["msg"] })
         if self.consumer_data.get("msg", None):
             return json.dumps(
                 { "message" : self.consumer_data["msg"] })



class ImageShareForm(MethodView, Authentication):
    def __init__(self):
        Authentication.__init__(self, request)

    def get(self):
        pass

    def post(self):
        self.do_check()




app.add_url_rule('/imageshareform', view_func=ImageShareForm.as_view('imageshareform'))

在上面的代码中,当我运行self.do_check()时,条件不会返回浏览器。我想在类Authentication()中保留此函数,因为我将在其他将要编写的类中重复使用类继承。

1 个答案:

答案 0 :(得分:1)

这是因为Python希望您明确声明要返回的内容:

def one():
    return 1

def two():
    return 2

def how_would_this_work():
    one()
    two()

how_would_this_work() # returns None

def this_works():
    one()
    return two()

this_works() # returns 2

您需要在return方法中添加明确的post

def post(self):
    return self.do_check()
相关问题