2011-09-12 19 views
1

私はGoogleアプリケーションエンジンの初心者ですが、私はこの質問があります。python-googleアプリケーションエンジンを使用してデータストア内のフォームからデータを入力する方法

私はフォームを作成しようとし、送信するとすべてのデータをデータストアに入れます。 exmble

class Book(db.Model): 
    #book_id = db.key 
    title = db.StringProperty() 
    author = db.StringProperty() 
    #copies = db.IntegerProperty() 
    category = db.StringProperty() 

class GuestBook(webapp.RequestHandler): def get(self): 
     self.response.out.write(""" 
     <html> 
     <body> 
      <form action="/sign" method="post"> 
      <div>Title: <input type="text" name="title"</div> 
    <div>Author: <input type="text" name="author"</div> 
    <div>Copies: <input type="text" name="copies"</div> 
    <div><select> 
     <option name="category" value="adventure">Adventure</option> 
     <option name="category" value="comedy">Comedy</option> 
     <option name="category" value="dramatic">Dramatic</option> 
     <option name="category" value="mystery">Mystery</option> 
     <option name="category" value="science_fiction">Science Fiction</option></select> 
    <div><input type="submit" value="Add Book"></div> 
      </form> 
     </body> 
     </html>""") 

のため、私はこの

class Add(webapp.RequestHandler): 
    def post(self): 

     Book.title = self.request.get('title') 
     Book.author = self.request.get('author') 
     Book.category = self.request.get('category') 
     book = Book() 
     book.put() 

を試してみましたが、私はこれらの

Traceback (most recent call last): 
    File "/home/kostas89/google_appengine/google/appengine/ext/webapp/__init__.py", line 636, in __call__ 
    handler.post(*groups) 
    File "/home/kostas89/library/library.py", line 59, in post 
    book.put() 
    File "/home/kostas89/google_appengine/google/appengine/ext/db/__init__.py", line 984, in put 
    return datastore.Put(self._entity, config=config) 
    File "/home/kostas89/google_appengine/google/appengine/api/datastore.py", line 455, in Put 
    return _GetConnection().async_put(config, entities, extra_hook).get_result() 
    File "/home/kostas89/google_appengine/google/appengine/datastore/datastore_rpc.py", line 629, in get_result 
    self.check_success() 
    File "/home/kostas89/google_appengine/google/appengine/datastore/datastore_rpc.py", line 599, in check_success 
    rpc.check_success() 
    File "/home/kostas89/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 558, in check_success 
    self.__rpc.CheckSuccess() 
    File "/home/kostas89/google_appengine/google/appengine/api/apiproxy_rpc.py", line 156, in _WaitImpl 
    self.request, self.response) 
    File "/home/kostas89/google_appengine/google/appengine/api/datastore_file_stub.py", line 710, in MakeSyncCall 
    response) 
    File "/home/kostas89/google_appengine/google/appengine/api/apiproxy_stub.py", line 87, in MakeSyncCall 
    method(request, response) 
    File "/home/kostas89/google_appengine/google/appengine/api/datastore_file_stub.py", line 793, in _Dynamic_Put 
    self.__WriteDatastore() 
    File "/home/kostas89/google_appengine/google/appengine/api/datastore_file_stub.py", line 643, in __WriteDatastore 
    self.__WritePickled(encoded, self.__datastore_file) 
    File "/home/kostas89/google_appengine/google/appengine/api/datastore_file_stub.py", line 699, in __WritePickled 
    os.rename(tmp_filename, filename) 
OSError: [Errno 21] Is a directory 

は、だから私は「(私はフォーラムで見つける。)この "道" であると確信してしまいました本当に間違っている。どのように私はデータを入れ、多分私はそれを取得します(しかし、これは別の話です)どのような提案は愚か?ありがとうございます。

答えて

3

あなたが作成したインスタンスに値を割り当てる必要があります

、ないあなたが dev_appserverに、コマンドライン上のデータストアのパスを指定している、とパスディレクトリに点を指定しているように見えます
class Add(webapp.RequestHandler): 
    def post(self): 
    book = Book() 
    book.title = self.request.get('title') 
    book.author = self.request.get('author') 
    book.category = self.request.get('category')   
    book.put() 
+1

ありがとう、私はちょうど値を割り当てて、私はやった!他の何か、私は結果を表示する必要があります、私はfetch()メソッドを使用しようとしていますが、私は再びいくつかのエラーがある(また、私は他のメソッドを試したが、まだ私は結果がない)。再度、感謝します! – kostas89

+1

@Kostasこの回答が役に立ったら、これを受け入れたものとしてマークする必要があります。あなたにもっと尋ねたいことがある場合は、別の質問を開きます。 – systempuntoout

0

ファイル。これを修正するか、引数をすべて削除してみてください。

関連する問題