2013-02-02 38 views
1

內GAE我得到一個錯誤,告訴我:類型錯誤:恰恰1個參數(2給出)內GAE

類型錯誤:get_default_tile()恰恰1個參數(2給出)

你可以從我的主要PY文件中看到代碼get_default_tile()被傳遞只有一個參數,它是

default_tile = self.get_default_tile(name) 

全部代碼如下:

import jinja2 # html template libary 
import os 

jinja_environment = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__))) 

import urllib 
import urllib2 
import webapp2 

from google.appengine.ext import db 
from google.appengine.api import urlfetch 


class Default_tiles(db.Model): 
    name = db.StringProperty() 
    image = db.BlobProperty(default=None) 


class MainPage(webapp2.RequestHandler): 
    def get(self): 

    # this just prints out the url which the user enters into input 
    image_name = self.request.get('image_name') 

    template_values = { 
     'image_name': image_name, 
    } 

    template = jinja_environment.get_template('index.html') 
    self.response.out.write(template.render(template_values)) 



class Upload(webapp2.RequestHandler): 
    def post(self): 

    # get information from form post upload 
    image_url = self.request.get('image_url') 
    image_name = self.request.get('image_name') 

    # create database entry for uploaded image 
    default_tile = Default_tiles() 
    default_tile.name = image_name 
    default_tile.image = db.Blob(urlfetch.Fetch(image_url).content) 
    default_tile.put() 

    self.redirect('/?' + urllib.urlencode({'image_name': image_name})) 


class Get_default_tile(webapp2.RequestHandler): 
    def get(self): 
    name = self.request.get('image_name') 
    default_tile = self.get_default_tile(name) 

    self.response.headers['Content-Type'] = "image/png" 
    self.response.out.write(default_tile.image) 

    def get_default_tile(name): 
    result = db.GqlQuery("SELECT * FROM Default_tiles WHERE name = :1 LIMIT 1", name).fetch(1) 
    if (len(result) > 0): 
     return result[0] 
    else: 
     return None 


app = webapp2.WSGIApplication([('/', MainPage), 
           ('/upload', Upload), 
           ('/default_tile_img', Get_default_tile)], 
           debug=True) 

任何幫助,將不勝感激。

回答

6

get_default_tile():是類的成員方法Get_default_tile所以你需要定義它:

def get_default_tile(self, name):

或者,如果你希望它是一個靜態方法:

@staticmethod 
def get_default_tile(name): 
0

OK,我越來越錯,但代碼如下:

class myclassname(webapp2.RequestHandler):

def get(self): 

    self.response.write('hola') 

我解決了=

class myclassname(webapp2.RequestHandler):

def get(self, **name**): 

    self.response.write('hola') 
相關問題