鱼C论坛

 找回密码
 立即注册
查看: 2407|回复: 20

[已解决]python调用前端html

[复制链接]
发表于 2023-4-5 17:21:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
from flask import Flask, render_template
app = Flask(__name__)
app.template_folder = 'templates'

@app.route("/register")
def register():
    # return"1111"
    return render_template(register.html)

if __name__== "__main__":
    app.run()


register.html

<register html>
<html lang="en">
<head>
</head>
<body>
<h1>欢迎登陆</h1>
    <div>
        用户名:<input type="text" />
    </div>
    <div>
        密码:<input  type="password" />
    </div>

</body>

register.html位于template文件夹内,若在return后面写字符串,网页可以运行,换成调用render_template函数调用html文件则无法运行,且出现
This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.警告,求大神们讲解一下哪里出了问题
最佳答案
2023-4-5 17:25:55
你的代码中有一些小错误,导致无法正常渲染HTML。

  • 在 render_template 函数调用时,你需要将模板名称用引号括起来,以便将其作为字符串传递。
  • HTML中<register html> 这一行不是合法的HTML标签,请删除。


修改后的代码如下:
from flask import Flask, render_template
app = Flask(__name__)

@app.route("/register")
def register():
    return render_template('register.html')

if __name__== "__main__":
    app.run()

修改后的 register.html:
<html lang="en">
<head>
</head>
<body>
<h1>欢迎登陆</h1>
    <div>
        用户名:<input type="text" />
    </div>
    <div>
        密码:<input  type="password" />
    </div>

</body>

关于你提到的警告信息:

This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.


这是Flask默认的开发服务器警告信息,它提醒您不要将此开发服务器用于生产环境。

在生产环境中,应使用WSGI服务器,例如 Gunicorn 或 uWSGI。这个警告在开发环境中是正常的,你不需要担心。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-5 17:25:55 | 显示全部楼层    本楼为最佳答案   
你的代码中有一些小错误,导致无法正常渲染HTML。

  • 在 render_template 函数调用时,你需要将模板名称用引号括起来,以便将其作为字符串传递。
  • HTML中<register html> 这一行不是合法的HTML标签,请删除。


修改后的代码如下:
from flask import Flask, render_template
app = Flask(__name__)

@app.route("/register")
def register():
    return render_template('register.html')

if __name__== "__main__":
    app.run()

修改后的 register.html:
<html lang="en">
<head>
</head>
<body>
<h1>欢迎登陆</h1>
    <div>
        用户名:<input type="text" />
    </div>
    <div>
        密码:<input  type="password" />
    </div>

</body>

关于你提到的警告信息:

This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.


这是Flask默认的开发服务器警告信息,它提醒您不要将此开发服务器用于生产环境。

在生产环境中,应使用WSGI服务器,例如 Gunicorn 或 uWSGI。这个警告在开发环境中是正常的,你不需要担心。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 18:51:49 | 显示全部楼层
isdkz 发表于 2023-4-5 17:25
你的代码中有一些小错误,导致无法正常渲染HTML。

WSGI服务器是什么啊,大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 18:52:47 | 显示全部楼层
wyhpylc 发表于 2023-4-5 18:51
WSGI服务器是什么啊,大佬

假如我要把他投放到生产环境,怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 18:59:10 | 显示全部楼层
wyhpylc 发表于 2023-4-5 18:51
WSGI服务器是什么啊,大佬

WSGI(Web Server Gateway Interface)是Python Web应用程序和Web服务器之间的标准接口。

它定义了一种通用的方法,让Web服务器能够与Python应用程序进行通信,从而为Web应用程序提供服务。

WSGI服务器承担了处理HTTP请求和响应的任务,并与你的Python应用程序协同工作。

当你在生产环境中部署一个Python Web应用程序时,通常需要使用一个WSGI服务器。

WSGI服务器处理Web请求,并将它们转发给你的应用程序。与Flask、Django等Web框架配合使用的常见WSGI服务器有:

  • Gunicorn(绿色独角兽)
  • uWSGI


这些WSGI服务器提供了性能优化、并发处理等特性,适用于生产环境。

Flask或Django等框架自带的开发服务器通常仅用于开发和测试目的,因为它们可能不具备足够的性能、安全性和稳定性。

在生产环境中部署Flask应用时,例如,你可以选择使用Gunicorn。部署过程大致如下:

  • 安装Gunicorn:pip install gunicorn
  • 假设你的Flask应用的入口文件名为 app.py,并且Flask实例名为 app,则可以通过以下命令启动Gunicorn:gunicorn app:app
  • 根据需要配置Gunicorn,以满足你的性能和安全需求。



通过这种方式,你可以使用WSGI服务器在生产环境中部署Python Web应用程序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 19:01:27 | 显示全部楼层
wyhpylc 发表于 2023-4-5 18:52
假如我要把他投放到生产环境,怎么办

要将Flask应用部署到生产环境并消除该警告,你需要使用一个WSGI服务器。以Gunicorn为例,这里是一种部署Flask应用的方法:

1、首先,确保已安装Gunicorn。可以通过以下命令安装:
pip install gunicorn

2、假设你的Flask应用的入口文件名为app.py,并且Flask实例名为app,则可以通过以下命令启动Gunicorn:
gunicorn app:app

这将在Gunicorn中运行你的应用程序,而不是Flask的内置开发服务器。

在这种情况下,你不会看到“This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.”的警告。

请注意,仅使用Gunicorn并不意味着你的应用程序已经完全准备好投入生产。

你可能需要配置Gunicorn以满足性能和安全需求。

此外,为确保应用程序的稳定性和安全性,你可能还需要考虑如下事项:

  • 使用反向代理服务器(如Nginx或Apache)。
  • 配置SSL证书以支持HTTPS。
  • 确保应用程序性能优化。
  • 关注安全实践,如设置合适的HTTP头和限制访问等。



部署Flask应用到生产环境是一个涉及多个步骤的过程,确保遵循最佳实践非常重要。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 19:54:47 | 显示全部楼层
isdkz 发表于 2023-4-5 19:01
要将Flask应用部署到生产环境并消除该警告,你需要使用一个WSGI服务器。以Gunicorn为例,这里是一种部署F ...

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-5 20:10:21 | 显示全部楼层
isdkz 发表于 2023-4-5 17:25
你的代码中有一些小错误,导致无法正常渲染HTML。

大佬,我按你的代码跑了一遍,还是运行不开,我在想是不是我储存的位置不是python默认的储存路径,而是在桌面新建了一个文件夹,这样会不会影响程序运行呢,还是能打开网页,但是显示
Internal Server Error
The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.您觉得是什么问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:19:45 | 显示全部楼层
苏打气泡水 发表于 2023-4-5 20:10
大佬,我按你的代码跑了一遍,还是运行不开,我在想是不是我储存的位置不是python默认的储存路径,而是在 ...


模板文件得放在 templates 目录下,这是默认配置,

如果你不想放在 templates 目录的话,得在实例化flask应用的时候传一个 template_folder 的参数,

比如把py文件和模板文件放在同一目录:
app = Flask(__name__, template_folder='.')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-5 20:24:17 | 显示全部楼层
isdkz 发表于 2023-4-5 20:19
模板文件得放在 templates 目录下,这是默认配置,

如果你不想放在 templates 目录的话,得在实例化 ...

模板文件是在template下面,app主文件与template是在同级文件,二者都在root根文件下面,但根文件是在桌面D盘内部的会影响到吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:25:33 | 显示全部楼层
苏打气泡水 发表于 2023-4-5 20:24
模板文件是在template下面,app主文件与template是在同级文件,二者都在root根文件下面,但根文件是在桌 ...

templates 目录才是正确的,你少了个 s 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-4-5 20:29:51 | 显示全部楼层
isdkz 发表于 2023-4-5 20:25
templates 目录才是正确的,你少了个 s 吧

谢谢大佬,犯了低级错误,找错误找了一下午,以为是语法错了,万分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:51:33 | 显示全部楼层
isdkz 发表于 2023-4-5 20:25
templates 目录才是正确的,你少了个 s 吧
root@ser419570645840:~/new# gunicorn app:app
[2023-04-05 12:50:40 +0000] [1254748] [INFO] Starting gunicorn 20.1.0
[2023-04-05 12:50:40 +0000] [1254748] [INFO] Listening at: http://127.0.0.1:8000 (1254748)
[2023-04-05 12:50:40 +0000] [1254748] [INFO] Using worker: sync
[2023-04-05 12:50:40 +0000] [1254750] [INFO] Booting worker with pid: 1254750
[2023-04-05 12:50:40 +0000] [1254750] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.8/dist-packages/gunicorn/util.py", line 359, in import_app
    mod = importlib.import_module(module)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'app'
[2023-04-05 12:50:40 +0000] [1254750] [INFO] Worker exiting (pid: 1254750)
[2023-04-05 12:50:40 +0000] [1254748] [INFO] Shutting down: Master
[2023-04-05 12:50:40 +0000] [1254748] [INFO] Reason: Worker failed to boot.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:51:45 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:52:47 | 显示全部楼层

你的文件名不是叫 app.py 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:53:41 From FishC Mobile | 显示全部楼层
isdkz 发表于 2023-4-5 20:52
你的文件名不是叫 app.py 吧

啊!哈哈!还真是.抱歉打扰了.犯了个低级错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 20:59:55 | 显示全部楼层
isdkz 发表于 2023-4-5 20:52
你的文件名不是叫 app.py 吧

emmmm,这样好像没办法在公网访问啊(有公网ip)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 21:07:20 | 显示全部楼层
wyhpylc 发表于 2023-4-5 20:59
emmmm,这样好像没办法在公网访问啊(有公网ip)

默认情况下,Gunicorn在本地网络上运行Flask应用程序(即,仅能通过localhost或127.0.0.1进行访问)。

要使你的Flask应用程序能够在公网上访问,你需要将Gunicorn绑定到一个公共IP地址。

通常,你可以将其绑定到0.0.0.0,以便它能够监听所有网络接口。

此外,你可以指定一个端口,以便在该端口上运行应用程序。


假设你的Flask应用的入口文件名为app.py,并且Flask实例名为app。

运行以下命令以在公网上运行你的Flask应用程序:
gunicorn -b 0.0.0.0:8000 app:app
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 21:10:40 | 显示全部楼层
isdkz 发表于 2023-4-5 21:07
默认情况下,Gunicorn在本地网络上运行Flask应用程序(即,仅能通过localhost或127.0.0.1进行访问)。

...

[2023-04-05 13:10:01 +0000] [1259307] [INFO] Starting gunicorn 20.1.0
[2023-04-05 13:10:01 +0000] [1259307] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2023-04-05 13:10:01 +0000] [1259307] [ERROR] Retrying in 1 second.
[2023-04-05 13:10:02 +0000] [1259307] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2023-04-05 13:10:02 +0000] [1259307] [ERROR] Retrying in 1 second.
[2023-04-05 13:10:03 +0000] [1259307] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2023-04-05 13:10:03 +0000] [1259307] [ERROR] Retrying in 1 second.
[2023-04-05 13:10:04 +0000] [1259307] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2023-04-05 13:10:04 +0000] [1259307] [ERROR] Retrying in 1 second.
[2023-04-05 13:10:05 +0000] [1259307] [ERROR] Connection in use: ('0.0.0.0', 8000)
[2023-04-05 13:10:05 +0000] [1259307] [ERROR] Retrying in 1 second.
[2023-04-05 13:10:06 +0000] [1259307] [ERROR] Can't connect to ('0.0.0.0', 8000)

这是怎么回事?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-5 21:12:36 | 显示全部楼层
wyhpylc 发表于 2023-4-5 21:10
[2023-04-05 13:10:01 +0000] [1259307]  Starting gunicorn 20.1.0
[2023-04-05 13:10:01 +0000] [1259 ...


8000端口已经被占用了,换个端口或者杀掉占用8000端口的进程

有可能是你之前开启的没有关掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 23:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表