您现在的位置是:百科 >>正文
python网站搭建
百科93836人已围观
简介用Python搭网站,最省事的路径是Flask。Django功能全但太重,FastAPI更适合写API而非传统网页。如果你只是想跑通一个能看的东西,Flask十几行代码就够。 先装库: pip ins ...
用Python搭网站,网站最省事的搭建路径是Flask。Django功能全但太重,网站FastAPI更适合写API而非传统网页。搭建如果你只是网站想跑通一个能看的东西,Flask十几行代码就够。搭建
先装库:
pip install flask 然后新建一个app.py,网站写这些:
from flask import Flask,搭建 render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run(debug=True) 这段代码干的事:创建一个应用实例,定义根路径返回什么,网站启动开发服务器。搭建debug=True意味着改代码后自动重启,网站省去手动折腾。搭建但上线时务必关掉,网站否则报错页面会暴露源码路径。搭建
模板文件放在templates/文件夹里。网站index.html可以长这样:
<!DOCTYPE html> <html> <head><title>测试页</title></head> <body> <h1>{ { message }}</h1> </body> </html> 注意{ { message }}是Jinja2模板语法。Flask默认用Jinja2渲染。要传变量,改一下视图函数:
@app.route('/') def index(): return render_template('index.html', message='你好,Python') 跑起来后浏览器访问http://127.0.0.1:5000,看到“你好,Python”就算通了。我第一次跑的时候忘了建templates文件夹,报TemplateNotFound,查了十分钟才发现是路径问题。Flask对目录结构有要求,模板必须放在templates里,静态文件(CSS、JS、图片)放在static里。
静态文件引用方式:
<link rel="stylesheet" href="{ { url_for('static', filename='style.css') }}"> url_for是Flask内置的URL构建函数,比手写路径靠谱。改路由时不用去模板里一个个改链接。
如果要做多页面,加路由就行:
@app.route('/about') def about(): return render_template('about.html') 处理表单用request对象:
from flask import request @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] return f'收到:{ username}' return render_template('login.html') 这里有个坑:request.form['username']如果字段不存在会直接抛400错误。稳妥点用request.form.get('username'),返回None而不是崩掉。
数据库这块,小型项目用SQLite加SQLAlchemy就够了。不用装MySQL,一个文件搞定。但SQLAlchemy的ORM写法需要花点时间适应,尤其是关系映射那块。我见过不少人卡在db.create_all()没生效上,多半是因为模型类没被导入,Flask没注册到。
部署的话,开发服务器不能直接暴露到公网。用Gunicorn加Nginx是常见组合。Gunicorn负责跑Python进程,Nginx处理静态文件和反向代理。命令大概这样:
gunicorn -w 4 -b 127.0.0.1:8000 app:app -w 4是4个worker进程。具体开几个看CPU核数,一般2 * 核数 + 1。但别在1核1G的机器上开太多,内存扛不住。
Nginx配置里把/static指向静态文件夹,其他请求转发给Gunicorn。这样静态文件不走Python,速度快很多。
整条链路跑通后,你会发现Python搭网站的门槛其实在部署和环境配置上,写代码反而是最简单的部分。Flask的哲学是给你最小核心,其他自己选。这既是优点也是缺点——灵活但需要自己做技术决策。如果不想折腾,Django自带admin和ORM,开箱即用,代价是学习曲线更陡。
选哪个取决于你要做什么。一个展示页、一个小工具,Flask半小时能上线。要用户系统、后台管理、权限控制,Django更省事。
Tags:
上一篇:七灾一毒一渗透一暴恐教育
下一篇:f12键的作用修改网页
相关文章
winformwebbrowser关闭来自网页的消息
百科WinForm里嵌了个WebBrowser控件,网页一弹alert,那个恼人的对话框就卡在界面中央,标题栏写着“来自网页的消息”,底下就一个“确定”按钮。你点掉它,页面才继续跑。要是网页里循环弹,你手 ...
【百科】
阅读更多自己建的网站怎么能在百度上搜到
百科我花了三个通宵建好的个人网站,上线第一天就迫不及待地在百度搜索框里输入域名。结果翻了好几页,连影子都没见着。那种感觉就像在闹市区开了家店,却没人知道门朝哪开。 后来我才搞明白,百度根本不知道你的网站存 ...
【百科】
阅读更多菠菜是什么梗
百科2021年5月,一个ID叫“菠菜”的网友在贴吧发帖,说自己被绿了,女友跟人跑了,评论区本该是清一色的“老哥挺住”,结果有人回了一句“菠菜,我们挺你”。这本来是个普通安慰,但坏就坏在“菠菜”这名字太像“ ...
【百科】
阅读更多