1

GAE 内で次のようなエラーが表示されます。

TypeError: get_default_tile() は正確に 1 つの引数を取ります (2 つ指定)

メインの py ファイルget_default_tile()のコードを見るとわかるように、name という1 つの引数のみが渡されます。

 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)

どんな助けでも大歓迎です。

4

2 に答える 2

6

get_default_tile():クラスのメンバーメソッドなGet_default_tileので、次のように定義する必要があります。

def get_default_tile(self, name):

または、静的メソッドにしたい場合:

@staticmethod
def get_default_tile(name):
于 2013-02-02T01:46:05.190 に答える
0

わかりました、私もそのエラーを取得していますが、コードは次のとおりです。

クラス myclassname( webapp2.RequestHandler ):

 def get(self):

     self.response.write('hola')

=で解決しました

クラス myclassname( webapp2.RequestHandler ):

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

     self.response.write('hola')
于 2014-05-01T04:12:55.933 に答える