如何用Python搭建一个网站?

科技   2024-11-11 15:14   山西  
今天我们聊个挺酷的话题:用Python搭建一个网站!👨‍💻 是的,Python不仅仅能写脚本、做数据分析、搞AI,搭建网站也是完全不在话下。


很多朋友一提到做网站,脑子里可能会蹦出“HTML、CSS、JavaScript”这些前端玩意儿,但其实啊,后台才是网站的“心脏”,而Python在后台开发方面真的是相当拿手。

Step 1:选一个框架吧!——Django还是Flask?

在Python世界里,搭建网站一般会用到两大框架:Django和Flask。选哪个呢?看看需求:
  • Django:功能超级全,属于“重型武器”。如果你想做个功能复杂、内容丰富的大型网站,比如有会员系统、支付功能、消息通知这些,Django简直就是一把瑞士军刀!而且Django有强大的ORM(对象关系映射),直接把数据库表和Python对象绑定,数据查询、插入轻松搞定!
  • Flask:轻量、灵活,适合小而精的项目。它自带的东西少,但这其实是一种优势——适合开发简单的API或小型网站,代码量少,更容易控制。Flask更像是一个“骨架”,你可以根据需要自由地去扩展。
我们接下来用Flask举个例子,Django虽然也很好,但内容太多,一个新手可能会被复杂的结构搞晕。Flask嘛,适合咱们“快速上手”!

Step 2:安装Flask

准备工作很简单,用Python自带的pip来安装Flask:
pip install Flask
几秒钟搞定!

Step 3:Hello, Flask! 用代码写“Hello World”

在编程界,写网站也得从“Hello, World!”开始。这段代码简单,但却是Flask网站的雏形:
from flask import Flask

app = Flask(__name__)  # 初始化Flask应用

@app.route('/')
def hello():
    return "Hello, World!"  # 这是网站的首页内容

if __name__ == '__main__':
    app.run(debug=True)  # 启动服务,debug模式方便调试
解释一下这个小程序:
  • app = Flask(__name__):这里初始化了一个Flask应用实例,Flask的__name__参数主要是为了告诉Flask文件的名称,便于定位资源和模块。
  • @app.route('/'):这是Flask的“路由”,它定义了访问路径,这里我们设置的是网站的“/”路径,也就是主页。
  • app.run(debug=True):启动服务器,debug=True可以让服务器在检测到代码变化时自动重启,方便开发时调试。
运行一下这个程序,打开浏览器输入http://127.0.0.1:5000,你就能看到“Hello, World!”啦。是不是有点小激动😆?

Step 4:加入一点HTML

网站可不能光靠文字吧?咱们再给页面添点HTML,让它看起来像个网站。
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return '''
    <html>
        <head><title>My Flask Site</title></head>
        <body>
            <h1>Hello from Flask!</h1>
            <p>This is a simple website built with Flask.</p>
        </body>
    </html>
    '''


if __name__ == '__main__':
    app.run(debug=True)
这样一改动后,网页上不仅有文字,还会有一个标题和一段描述。虽然还比较简单,但这就是动态网页的开始!

Step 5:分离HTML,使用模板引擎

直接写HTML在Python代码里显然不太优雅对吧?Flask内置了一个模板引擎——Jinja2,可以让你把HTML和Python逻辑分离。这样代码清晰易懂,也更符合“代码和页面分离”的Web开发原则。
我们先创建一个模板文件夹templates,然后在里面写一个HTML文件index.html
<!-- 文件路径:templates/index.html -->
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>My Flask Site</title>
</head>
<body>
    <h1>Hello from {{ name }}!</h1>
    <p>This site is powered by Flask and Jinja2.</p>
</body>
</html>
{{ name }}是Jinja2的变量占位符,意思是会用Python代码里传过来的变量来替换。
接下来,我们修改一下Flask代码,用render_template来加载HTML模板:
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name="Flask")

if __name__ == '__main__':
    app.run(debug=True)
这样,你的代码和HTML页面就清晰分开了。访问网站时,{{ name }}会被替换成“Flask”。

Step 6:加入表单和用户交互

一个网站如果只能看,不能互动,那就显得有些无聊了。接下来我们来加点表单,实现用户输入和数据处理。
假设我们加一个表单,让用户输入名字,然后在页面上打个招呼。

1. 修改HTML

index.html里加入一个表单,让用户可以输入名字:
<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Greet Me</title>
</head>
<body>
    <h1>Hi, {{ name }}!</h1>
    <form method="POST" action="/greet">
        <label for="name">Enter your name:</label>
        <input type="text" id="name" name="name">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

2. 处理用户输入

接下来,我们在Flask代码中添加一个处理表单提交的函数。新增一个/greet路由,接收POST请求,并处理用户提交的数据。
from flask import Flask, render_template, request

app = Flask(__name__)

@app.route('/')
def home():
    return render_template('index.html', name="Guest")  # 默认显示Guest

@app.route('/greet', methods=['POST'])
def greet():
    name = request.form.get('name')  # 获取表单里的name字段
    return render_template('index.html', name=name)

if __name__ == '__main__':
    app.run(debug=True)
解释一下上面的代码:
  • request.form.get('name'):从表单数据里获取用户输入的名字。
  • name=name:传递变量到模板,让HTML页面显示用户输入的名字。
访问主页,输入名字,然后提交表单。网页上应该会打出“Hi, [你的名字]!”了。是不是特别人性化?这就是动态网页的魅力!

Step 7:部署到生产环境

虽然在本地玩挺好,但想让别人访问的话,还得把网站部署到服务器上。这里常用的部署方案是用Gunicorn搭配Nginx:
pip install gunicorn  # 安装Gunicorn
然后,用下面这条命令启动Gunicorn来运行Flask应用:
gunicorn -w 4 -b 0.0.0.0:8000 app:app
  • -w 4表示使用4个工作进程,这样可以提高并发处理能力。
  • -b 0.0.0.0:8000表示绑定IP和端口,这样其他设备也能访问了。
当然,这只是部署的开始。生产环境中,我们还可以利用Nginx作为反向代理来转发请求给Gunicorn,从而提升性能和安全性。这部分配置可以详细参考Nginx官方文档。
到这儿,一个简单的网站就搭好了!用Flask和Python开发网站的过程其实不难,重点是先搞明白每一步的逻辑:路由、视图、模板、表单处理,再加点部署知识。
对编程、职场感兴趣的同学,大家可以联系我微信:golang404,拉你进入“程序员交流群”。
🔥虎哥私藏精品 热门推荐🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》

资料包含了《IDEA视频教程》《最全python面试题库》《最全项目实战源码及视频》《毕业设计系统源码》,总量高达650GB全部免费领取

Python技术迷
回复:python,领取Python面试题。分享AI编程,AI工具,Python技术栈,Python教程,Python编程视频,Pycharm项目,Python爬虫,Python数据分析,Python核心技术,Python量化交易。
 最新文章