1

BeautifulSoupを使用してウェブサイトからデータのリストを取得しようとしています。

class burger(webapp2.RequestHandler):
    Husam = urlopen('http://www.qaym.com/city/77/category/3/%D8%A7%D9%84%D8%AE%D8%A8%D8%B1/%D8%A8%D8%B1%D8%AC%D8%B1/').read()

    def get(self, soup = BeautifulSoup(Husam)):

        tago = soup.find_all("a", class_ = "bigger floatholder")
        for tag in tago:
        me2 = tag.get_text("\n")

        template_values = {
                           'me2': me2
                           }
        for template in template_values:

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

jinja2を使用してテンプレートにデータを表示しようとすると、リストの数に基づいてテンプレート全体が繰り返され、各単一の情報が1つのテンプレートに配置されます。

リスト全体を1つのタグに入れて、繰り返しなしで他のタグを編集できるようにするにはどうすればよいですか?

<li>{{ me2}}</li>
4

1 に答える 1

2

エントリのリストを出力するには、次のようにjinja2テンプレートでエントリをループします。

{%for entry in me2%}
  <li> {{entry}} </li>
{% endfor %}

これを使用するには、Pythonコードもタグをリストに入れる必要があります。

このようなものが機能するはずです:

   def get(self, soup=BeautifulSoup(Husam)):
      tago = soup.find_all("a", class_="bigger floatholder")

      # Create a list to store your entries
      values = []

      for tag in tago:
          me2 = tag.get_text("\n")
          # Append each tag to the list
          values.append(me2)

      template = jinja_environment.get_template('index.html')

      # Put the list of values into a dict entry for jinja2 to use
      template_values = {'me2': values}

      # Render the template with the dict that contains the list
      self.response.out.write(template.render(template_values))

参照:

于 2013-02-09T05:23:18.920 に答える