1

目標は、「名前」、「気分」変数、および日付をデータストアに取り込むことです。データストアで価値があると思うのは、Webフォームを数回送信したにもかかわらず、データのない暗号のように見えるエンティティキーとVisitor-name-mood-dateインデックスだけです。

これがフォームです

ファーストネーム:

選択する

良い

悪い

公平

これをDSコンソールで実行すると

ameError:名前'visitor'が定義されていません

q = Visitor.all()
q = db.GqlQuery("SELECT * FROM Visitor")  #in DS Console
results = q.fetch(2)
for p in results:
    print "%s" % (p.name)

#DATASTORE v v
class Visitor(db.Model):                   # index.py
    name = db.StringProperty()
    mood = db.StringProperty()
    date = db.DateTimeProperty(auto_now_add=True)

 class Post(webapp.RequestHandler):           #yaris
  def get(self):
    visitor_db = Visitor()
    visitor_db.name = self.request.get("name")
    visitor_db.mood = self.request.get("mood")
    visitor_db.put()

およびindex.yaml:

indexes:                              # seems like this is OK

-   kind: Visitor 
    properties:
    -   name: name
    -   name: mood
    -   name: date
        direction: asc

また、フォームの送信時にターミナルで405エラーが発生します。

編集:これを次のように機能させました。手伝ってくれてありがとう。

class MainPage(webapp.RequestHandler):
    def get(self):
        self.response.out.write("""<html><body>
<form action="/" method="post">
                           # form is here
</body></html> """) 

        name = self.request.get("name")
        name = name.capitalize()
        mood = self.request.get("mood")
        localtime = time.localtime(time.time())
        mon = localtime[1] # MONTH
        h = localtime[3] # HOUR

        # if/elif statements with %s specifiers follow...still in MainPage class v v

> def post(self):
>         name = self.request.get("name")
>         name = name.capitalize()
>         mood = self.request.get("mood")
>         info = Visitor(name = name, mood = mood)
>         info.put()
>         self.redirect("/index.py")

これにより、データストアにデータが保存されます。今、私が修正する必要がある唯一のことは、フォームの応答を取得して、フォームのすぐ隣にある適切なdivの元のフォームページ(index.py)に印刷することです。代わりに、フォームから送信された応答は、フォーマットされていない別のページに表示されます。私はself.redirectと次の機能を試しましたが、これを実装する方法、または正しいパスであっても、フォームの応答を別のページではなくフォームページに印刷するための指示が必要です。

作成されたハンドラー

    redirectionHandler = urllib2.HTTPRedirectHandler() 

    # 2 apply the handler to an opener
    opener = urllib2.build_opener(redirectionHandler)

    # 3. Install the openers
    urllib2.install_opener(opener)


    request = urllib2.Request("http://*my url*", #commented out     data=urllib.urlencode({'key':'value'}))
    response = urllib2.urlopen(request)
4

2 に答える 2

1

できるエンティティを作成していないようですput()。最初にこれを試してください:

class Post(webapp.RequestHandler):   
  def post(self):
    visitor_db = Visitor()
    visitor_db.name = self.request.get("name")
    visitor_db.mood = self.request.get("mood")
    visitor_db.put()

上記のコードは、新しいエントリを 1 つ作成して保存します。

フォームを使用してデータを送信している場合は、フォームの送信時にブラウザーが要求を要求しているため、get(self)をに変更する必要があります。post(self)POST

于 2012-06-12T22:03:14.890 に答える
0

あなたは正しい考えを持っているように見えますが、ApplyHandler.post() をデバッグする必要があります。おそらく問題はそこにあります。リクエストで投稿データが欠落している可能性があり、newuser オブジェクトが一連の None データで初期化されている可能性があります。

于 2012-06-12T19:06:52.213 に答える