如何用Python搭建一个网站?

今天我们聊个挺酷的话题:用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开发网站的过程其实不难,重点是先搞明白每一步的逻辑:路由、视图、模板、表单处理,再加点部署知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值