【问题标题】:Python Flask HTML Routing argumentsPython Flask HTML 路由参数
【发布时间】:2020-02-22 14:49:49
【问题描述】:

我正在为我的大学技术节设计一个网站,为期 3 天。我的大部分代码都在工作,但我仍然无法使用要加载的 youtube URL 获取静态网页。它给出了一个位置错误参数

附上python flask app路由的代码和静态网页的html代码

#Python Flask Code
@app.route('/')
def video():
    return video('video.html')
#HTML Static Page code
{% extends "base.html" %} {% block title %}Blog entries{% endblock %} {% block content_title %}{% if search %}Search "{{
    search }}"{% else %}Blog entries{% endif %}{% endblock %} {% block content %}

<div class="blog py-4">
    <h3 class="section-title tex-center m-5">Event Videos</h3>
    <div class="container">
        <div class="py-4">
            <div class="row">
                <div class="col-sm-6">
                    <iframe width="892" height="502" src="https://www.youtube.com/embed/t9FT9MKvO4c" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>
                    </iframe>            
                 </div>
            </div>
        </div>
    </div>
</div>

谁能解释一下这里的错误是什么?

以下是 Windows 上 CMD 中显示的错误

[2020-02-22 20:22:06,385] ERROR in app: Exception on /video/ [GET]
Traceback (most recent call last):
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\rosch\AppData\Local\Programs\Python\Python38\lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "colo.py", line 355, in video
    return video('video.html')
TypeError: video() takes 0 positional arguments but 1 was given
127.0.0.1 - - [22/Feb/2020 20:22:06] "[35m[1mGET /video/ HTTP/1.1[0m" 500 -

【问题讨论】:

  • 你希望video('video.html') 做什么?
  • 我的错误消失了,但现在页面没有被渲染
  • @KlausD。我必须获取包含要加载的视频的页面。该页面是静态的,需要将 youtube 视频作为 iframe 上传
  • 你的应用的目录结构是什么?

标签: python html flask


【解决方案1】:

video 是绑定到路由/ 的函数的名称。正如错误消息所暗示的那样,您正试图通过将要呈现的模板的名称传递给该函数来调用该函数。但是,video 的签名不包含任何参数。相反,只需使用flask.render_template:

@app.route('/')
def video():
  return flask.render_template('video.html')

【讨论】:

  • 它实际上导致错误消失但现在页面不会显示
  • @RoschRocks 您是否将video.html 存储在templates 文件夹中?
猜你喜欢
  • 2020-12-04
  • 2012-07-26
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2014-11-19
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多