【问题标题】:How do I automatically embed several different youtube videos based on user input? (Google App Engine)如何根据用户输入自动嵌入多个不同的 youtube 视频? (谷歌应用引擎)
【发布时间】:2014-04-24 09:14:25
【问题描述】:

我正在尝试使用分类为不同类型的 Youtube 的 iframe 代码自动嵌入 youtube 视频。用户可以输入一个将被存储的 youtube 共享 url,它应该采用符合流派类型的四个最新条目并截断 url,然后将其解析为 html 中的 iframe 代码。这是我目前所拥有的:

用于存储输入:

class suggestionndb(webapp2.RequestHandler):
    def post(self):
        suggestion = suggestions()
        suggestion.link = self.request.get("suggestlink")
        suggestion.genre = self.request.get("suggestgenre")
        suggestion.date = datetime.datetime.now()
        suggested = suggestion.put()`

用于截断和解析 url 以自动嵌入:

class classicalpage(webapp2.RequestHandler):
def get(self):
    user = users.get_current_user()
    if user:
        logout = users.create_logout_url(self.request.uri)
        classical = suggestions.query(suggestions.genre == "classical").order(-suggestions.date)
        classicallist = classical.fetch(4)
        for i in classicallist:
            link = i.link
            embed = link[16:]
            self.response.write(embed)
            template_values = {"logouturl":logout, "link":embed}
            template = JINJA_ENVIRONMENT.get_template("classical.html")
            self.response.write(template.render(template_values))
    else:
        self.redirect("/")

这是 HTML:

<div id="genrelist" name="genrelist">
        <h2 id="genretitle">♪ Classical ♪</h2>
        <iframe id="video1" name="classical1" width="480" height="360" src="https://www.youtube.com/embed/{{link}}" frameborder="0" allowfullscreen></iframe>
        <iframe id="video2" name="classical2" width="480" height="360" src="https://www.youtube.com/embed/{{link}}" frameborder="0" allowfullscreen></iframe>
        <iframe id="video3" name="classical3" width="480" height="360" src="https://www.youtube.com/embed/{{link}}" frameborder="0" allowfullscreen></iframe>
        <iframe id="video4" name="classical4" width="480" height="360" src="https://www.youtube.com/embed/{{link}}" frameborder="0" allowfullscreen></iframe>
</div>

这样,所有 4 个视频都是同一个 youtube 视频...如何根据最近的 4 个用户输入将每个视频制作成不同的视频?

【问题讨论】:

    标签: python html youtube-api google-cloud-datastore


    【解决方案1】:

    问题是您在模板中使用了相同的变量 ({{link}}),而该变量只有您分配的一个值。您可以通过几种方式解决此问题,但最好使用数组。

    您可以将上下文构建代码更改为:

    class classicalpage(webapp2.RequestHandler):
    def get(self):
        user = users.get_current_user()
        if user:
            logout = users.create_logout_url(self.request.uri)
            classical = suggestions.query(suggestions.genre == "classical").order(-suggestions.date)
            classicallist = classical.fetch(4)
            template_values = {
                "logouturl": logout, 
                "links": [i.link[16:] for i in classicallist],
            }
    
            template = JINJA_ENVIRONMENT.get_template("classical.html")
            self.response.write(template.render(template_values))
        else:
            self.redirect("/")
    

    同样,您可以使用jinja for loop 来渲染 iframe:

    <div id="genrelist" name="genrelist">
        <h2 id="genretitle">♪ Classical ♪</h2>
        {% for link in links %}
            <iframe id="video{{loop.index}}" name="classical{{loop.index}}" width="480" height="360" src="https://www.youtube.com/embed/{{link}}" frameborder="0" allowfullscreen></iframe>
        {% endfor %}
    </div>
    

    【讨论】:

      猜你喜欢
      • 2018-03-10
      • 2020-07-06
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 2023-03-27
      • 2019-01-06
      相关资源
      最近更新 更多