0

HTMLページをロードすると、データベースの結果が表示されません。私はpythonとjinja2を使用しています。{{initial_city}}は正しい結果を表示しています。問題は、get_dealsまたはjinja2を使用したhtmlファイルにあるようです。メインページで選択した都市と同じ結果を表示したい(フォームです)。また、データベースにエンティティがあり、Googleデータストアのローカル拡張機能にアクセスすると表示されます

get_dealsコードは次のとおりです。

    def get(self):
        def get_deals(choose_city, update=False):
            key = str(choose_city)
            all_deals = memcache.get(key)
            if all_deals is None:
                d = Deal.all()
                all_deals = d.filter('city = ', choose_city)
                all_deals = list(all_deals)
                memcache.set(key, all_deals)
           return all_deals

以下は私のスクリプトです:

from google.appengine.ext import db
from google.appengine.api import memcache
from google.appengine.ext.db import stats
from models import Deal
import os
import webapp2
import jinja2



class Deal(db.Model):
   title = db.TextProperty()
   description = db.TextProperty()
   city = db.TextProperty()

 deal = Deal(title='Hello',
        #description='Deal info here',
        #city='New York')
 deal.put()



jinja_environment = jinja2.Environment(autoescape=True,
    loader=jinja2.FileSystemLoader(os.path.join(os.path.dirname(__file__), 'templates')))

class MainPage(webapp2.RequestHandler):
  def get(self):
      template = jinja_environment.get_template('index.html')
      self.response.out.write(template.render())


class DealHandler(webapp2.RequestHandler):
    def get(self):
        def get_deals(choose_city, update=False):
            key = str(choose_city)
            all_deals = memcache.get(key)
            if all_deals is None:
                d = Deal.all()
                all_deals = d.filter('city = ', choose_city)
                all_deals = list(all_deals)
                memcache.set(key, all_deals)
           return all_deals


    choose_city = self.request.get('c')
    try:
        initial_city = str(choose_city)
        choose_city = initial_city
    except ValueError:
        initial_city = 0
        choose_city = initial_city


    template = jinja_environment.get_template('deal.html')
    self.response.out.write(template.render(initial_city = initial_city, get_deals = get_deals))



    app = webapp2.WSGIApplication([('/', MainPage),
                           ('/deal', DealHandler),
                           ('/content', ContentHandler)],
                          debug=True)

そして、結果を表示していない私のhtmlページは次のとおりです。

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="/twitter-bootstrap/twitter-bootstrap-      v2/docs/assets/css/bootstrap.css">
<title>
Deallzz: Chosen City: {{ initial_city }}
</title>
</head>
<body>
All deals:

{% for deal in deals %}
<li>{{ get_deals }}</li>
{% endfor %}

</body>
</html>
4

3 に答える 3

2
  1. コードでは、get_deals関数を呼び出していません。get_deals()私はあなたがそれを取り出して次のget()ように呼ぶことをお勧めします

    self.response.out.write(template.render(initial_city = initial_city, get_deals =self.get_deals(choose_city)))
    

    いいデザインだから。

    編集予定していない場合は、「get_deals()」に
    変更してください。self.get_deals()

  2. HTMLで使用dealsしますが、サーバーから呼び出すときにその値を指定していません。おそらくあなたがしたいことは

    {% for deal in get_deals %}    
        {{ deal }}  
    {% endfor %}
    
于 2012-10-04T06:00:08.223 に答える
0

実際にはget_deals関数を呼び出していません。

于 2012-10-04T05:56:01.203 に答える
0

挿入してみることができます

get_deals = get_deals(choose_city) 

self.response.out.write(template.render(initial_city = initial_city, get_deals = get_deals))

エミールが提案することもうまくいくはずです。それが役立つことを願っています!

于 2012-10-04T10:19:58.403 に答える