游客发表

python做网站代码

发帖时间:2026-10-17 05:11:14

用Python做网站,做网站代最省事的做网站代路径是Flask。别急着上Django,做网站代那玩意儿自带ORM、做网站代admin、做网站代模板引擎一整套,做网站代小项目用它像开卡车送外卖。做网站代Flask核心就一个文件,做网站代十几行代码就能跑起来。做网站代我电脑里还留着2019年写的做网站代第一个Flask应用,就三个路由,做网站代部署在Heroku免费层上,做网站代撑了半年多。做网站代

先看代码。做网站代新建一个app.py:

from flask import Flask,做网站代 render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html', title='首页') @app.route('/about') def about(): return '这是关于页面' if __name__ == '__main__': app.run(debug=True) 

装好Flask——pip install flask——然后python app.py,浏览器打开127.0.0.1:5000就能看到东西。debug=True这个参数别在生产环境用,它会暴露Werkzeug调试器,别人能直接在浏览器里执行任意代码。我吃过亏,一个测试站忘了关,被人扫到,数据库连接字符串全泄露了。

模板文件放在templates/目录下。Flask默认用Jinja2,语法跟Django模板很像,但更灵活。一个典型的index.html:

<!DOCTYPE html> <html> <head> <title>{ {  title }}</title> </head> <body> <h1>你好,{ {  name }}</h1> <ul> { % for item in items %} <li>{ {  item }}</li> { % endfor %} </ul> </body> </html> 

路由里传变量:render_template('index.html', title='首页', name='张三', items=['苹果','香蕉'])。Jinja2的{ { }}会自动转义HTML,防XSS。但如果你用|safe过滤器,那就自己担着。

静态文件——CSS、JS、图片——扔进static/文件夹。模板里用{ { url_for('static', filename='style.css') }}引用。这个url_for函数比硬编码路径强,改路由规则时不用满项目搜替换。

表单处理也简单。看这个登录例子:

from flask import request, redirect, url_for @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] if username == 'admin' and password == 'secret': return redirect(url_for('index')) return '登录失败' return render_template('login.html') 

request.form拿POST数据,request.args拿GET参数。redirect和url_for搭配用,别写死路径。

数据库这块,Flask不强制你用啥。SQLite配sqlite3模块够用,复杂点就SQLAlchemy。我一般用Flask-SQLAlchemy扩展,定义模型像这样:

from flask_sqlalchemy import SQLAlchemy app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True) email = db.Column(db.String(120)) 

然后db.create_all()建表。查询用User.query.filter_by(username='admin').first()。这套API跟Django ORM比,更接近原生SQL思维,但少了迁移工具。生产环境改表结构得手动写ALTER TABLE,或者上Alembic。

部署别用Flask自带的开发服务器。上gunicorn:gunicorn -w 4 app:app,前面挂Nginx做反向代理和静态文件服务。我现在的博客就是这么跑的,一台1核1G的VPS,日均两千PV毫无压力。

Python做网站,Flask是甜点区。再小的项目用纯WSGI写太累,再大的项目Flask也能撑——加蓝图分模块,加Celery做异步,加Redis做缓存。但要是团队里没人懂Python,或者需要现成的CMS后台,那还是考虑PHP或者Node吧。工具选顺手的,别跟语言较劲。

    热门排行

    友情链接