您现在的位置是:休闲 >>正文
用python做一个网站
休闲6人已围观
简介用Python做一个网站 用Python建站,最省事的路径是Flask。别急着碰Django,那玩意儿一套脚手架下来,光理解目录结构就得花半天。Flask核心就一个文件,十几行代码跑起来一个能用的站点 ...
用Python做一个网站
用Python建站,做站最省事的个网路径是Flask。别急着碰Django,做站那玩意儿一套脚手架下来,个网光理解目录结构就得花半天。做站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) 同目录下建一个 templates 文件夹,里面放 index.html。个网随便写点HTML,做站比如:
<!DOCTYPE html> <html> <head><title>我的个网站</title></head> <body> <h1>跑起来了</h1> <p>这是Flask渲染的页面</p> </body> </html> 终端里 python app.py,浏览器打开 127.0.0.1:5000,做站页面就出来了。个网整个过程不超过三分钟。做站
但光有静态页面没意思。Flask真正的价值在于把数据塞进模板。改一下路由:
@app.route("/user/<name>") def user(name): return render_template("user.html", username=name) 模板里用 { { username }} 接收。访问 /user/zhangsan,页面上就显示“zhangsan”。这种动态路由是Flask最顺手的地方,不用配置,装饰器一写就生效。
数据库这块,SQLite配SQLAlchemy够用了。装 flask-sqlalchemy,定义模型:
from flask_sqlalchemy import SQLAlchemy app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///site.db" db = SQLAlchemy(app) class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100)) content = db.Column(db.Text) 然后在Python shell里 db.create_all(),表就建好了。增删改查都是Python对象操作,不用手写SQL。我自己的博客就是这么搭的,从写第一行代码到部署上线,一个周末搞定。
模板继承是另一个省事的设计。建一个 base.html,把导航栏、页脚这些公共部分放进去,用 { % block content %}{ % endblock %} 留口子。其他页面 { % extends "base.html" %},只写差异部分。改导航栏只需要动一个文件,不用满项目找。
静态文件——CSS、JS、图片——全扔进 static 文件夹。模板里用 { { url_for('static', filename='style.css') }} 引用。Flask自动处理路径,换域名也不用改代码。
部署比想象中简单。本地跑通了,找个VPS,装Python和Nginx。用Gunicorn当应用服务器:
gunicorn -w 4 app:app Nginx做反向代理,把80端口的请求转发到Gunicorn的8000端口。配置文件网上抄一份改改就行。域名解析过去,HTTPS用Certbot免费签,十分钟全部搞定。
有个坑得提一下:Flask自带的开发服务器不能用于生产环境。app.run() 只适合本地调试。上线必须换Gunicorn或uWSGI,否则并发一上来就崩。
还有人问要不要学Django。我的看法是:如果你要做内容管理系统、电商后台这种功能密集的项目,Django的admin和ORM确实省事。但如果你只是想做个个人站、小工具、API接口,Flask的轻量和灵活更合适。先跑通一个最小可用版本,比花两周研究框架源码实在得多。
最后说个细节。Flask的 debug=True 模式下,改完代码保存,浏览器刷新就生效,不用重启。这个反馈循环特别快,写起来很舒服。但上线前记得关掉,否则会暴露源码和堆栈信息。
一个能用的网站,核心就是路由、模板、数据库这三样。Flask把它们串得很自然。剩下的功能,遇到什么查什么,不用提前学一堆用不上的东西。
Tags:
上一篇:sqlmap渗透
下一篇:樱花社区韩国日本中国
相关文章
缓解拥堵
休闲早高峰的十字路口,车流像一条被卡住喉咙的巨蟒,每隔十几秒才艰难地向前蠕动半个车身。我骑着共享单车在缝隙间穿行,看见一位西装革履的男士摇下车窗,对着前面那辆闪着刹车灯的本田猛按喇叭——可那本田又能去哪儿 ...
【休闲】
阅读更多文圣拳网站
休闲文圣拳网站上线那天,我盯着屏幕看了很久。首页没有花哨的轮播图,没有弹窗广告,只有一张黑白老照片——师父在院子里教徒弟推手,地上还积着昨夜的雪。这张照片是2003年拍的,那年我刚开始学拳,记得那天风特别 ...
【休闲】
阅读更多白帽黑客黑帽黑客和灰帽黑客的区别
休闲2017年5月,WannaCry勒索病毒席卷全球,150个国家超过30万台电脑被锁。事后调查发现,一个叫Marcus Hutchins的22岁英国小伙通过注册一个随机域名,意外触发了病毒的"自杀开关" ...
【休闲】
阅读更多