当前位置: 首页 > article >正文

python中Web开发框架的使用

Python 的 Web 开发框架种类繁多,常见的有 DjangoFlask 这两个框架。它们各有优点,适合不同类型的 Web 应用开发需求。下面,我将详细介绍这两大主流框架的使用方法,让你快速上手 Python 的 Web 开发。


1. Django

Django 是一个功能齐全、强大且高效的全栈 Web 开发框架,适合快速开发复杂的 Web 应用。它内置了很多功能,如 ORM(对象关系映射)、表单处理、用户认证、模板引擎等。

Django 安装

首先,你需要通过 pip 安装 Django:

pip install django
创建一个 Django 项目
  1. 创建项目
    使用 django-admin startproject 命令创建一个新项目。

    django-admin startproject mysite
    
  2. 启动开发服务器
    进入项目目录,启动 Django 的开发服务器。

    cd mysite
    python manage.py runserver
    

    打开浏览器,访问 http://127.0.0.1:8000/,你将看到 Django 的欢迎页面。

创建一个 Django 应用

在 Django 中,项目由多个应用组成。应用是功能模块,可以独立运行。

  1. 创建应用

    python manage.py startapp blog
    

    这将在项目目录下创建一个名为 blog 的应用文件夹。

  2. 注册应用
    打开项目的 settings.py 文件,找到 INSTALLED_APPS,将新创建的 blog 应用添加进去:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',  # 注册新应用
    ]
    
定义模型 (Model)

Django 的模型是定义数据库表的方式。假设你想创建一个博客文章模型。

  1. models.py 中定义模型

    from django.db import models
    
    class Post(models.Model):
        title = models.CharField(max_length=200)
        content = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
    
  2. 创建数据库迁移
    Django 使用迁移来管理数据库模式。首先,创建迁移文件:

    python manage.py makemigrations
    
  3. 应用迁移
    应用迁移,将模型映射到数据库:

    python manage.py migrate
    
创建视图 (Views)

视图是处理请求并返回响应的逻辑。

  1. views.py 中定义视图

    from django.shortcuts import render
    from .models import Post
    
    def post_list(request):
        posts = Post.objects.all()
        return render(request, 'blog/post_list.html', {'posts': posts})
    
  2. 设置 URL 路由
    blog 应用下创建一个 urls.py 文件并添加路由:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.post_list, name='post_list'),
    ]
    
  3. 连接项目的 urls.py
    在项目的 mysite/urls.py 中,包含应用的 URL:

    from django.urls import include, path
    
    urlpatterns = [
        path('blog/', include('blog.urls')),
        path('admin/', admin.site.urls),
    ]
    
模板 (Templates)

Django 使用模板来渲染 HTML 页面。

  1. 创建模板文件
    blog 文件夹下创建一个 templates/blog/post_list.html 文件,填入以下内容:
    <!DOCTYPE html>
    <html>
    <body>
        <h1>Blog Posts</h1>
        <ul>
            {% for post in posts %}
                <li>{{ post.title }} - {{ post.created_at }}</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    

现在访问 http://127.0.0.1:8000/blog/,你会看到博客文章列表展示在页面上。


2. Flask

Flask 是一个轻量级的 Web 框架,适合小型应用或 API 开发。与 Django 相比,Flask 更灵活,但需要你自行选择和配置许多工具和库。

Flask 安装

通过 pip 安装 Flask:

pip install Flask
创建一个简单的 Flask 应用
  1. 创建 Flask 项目
    在项目目录下创建一个名为 app.py 的文件,写入以下代码:

    from flask import Flask
    
    app = Flask(__name__)
    
    @app.route('/')
    def home():
        return "Hello, Flask!"
    
    if __name__ == '__main__':
        app.run(debug=True)
    
  2. 运行 Flask 项目
    在终端中运行:

    python app.py
    

    打开浏览器,访问 http://127.0.0.1:5000/,你会看到页面显示 “Hello, Flask!”。

路由和视图

Flask 使用装饰器定义路由。

  1. 定义路由和视图
    你可以根据 URL 创建不同的视图:

    @app.route('/hello/<name>')
    def hello(name):
        return f"Hello, {name}!"
    
  2. 动态路由
    Flask 支持动态 URL,你可以使用变量捕获 URL 参数。

    @app.route('/user/<username>')
    def show_user_profile(username):
        return f"User {username}"
    
模板 (Templates)

Flask 使用 Jinja2 作为模板引擎,允许动态生成 HTML。

  1. 创建模板目录
    在项目目录下创建一个名为 templates 的文件夹,并在其中创建 index.html 文件:

    <!DOCTYPE html>
    <html>
    <body>
        <h1>Hello, {{ name }}!</h1>
    </body>
    </html>
    
  2. 渲染模板
    修改 app.py,使用 render_template() 函数渲染模板:

    from flask import render_template
    
    @app.route('/hello/<name>')
    def hello(name):
        return render_template('index.html', name=name)
    
  3. 访问
    现在访问 http://127.0.0.1:5000/hello/Flask,你会看到页面显示 “Hello, Flask!”。

表单处理

你可以使用 Flask-WTF 来处理表单输入。

  1. 安装 Flask-WTF

    pip install Flask-WTF
    
  2. 表单示例

    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    from wtforms.validators import DataRequired
    
    class NameForm(FlaskForm):
        name = StringField('What is your name?', validators=[DataRequired()])
        submit = SubmitField('Submit')
    
  3. 表单视图
    创建表单视图并处理表单提交:

    from flask import Flask, render_template, redirect, url_for
    from flask_wtf import FlaskForm
    from wtforms import StringField, SubmitField
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'secret!'
    
    class NameForm(FlaskForm):
        name = StringField('What is your name?')
        submit = SubmitField('Submit')
    
    @app.route('/form', methods=['GET', 'POST'])
    def form():
        form = NameForm()
        if form.validate_on_submit():
            return redirect(url_for('hello', name=form.name.data))
        return render_template('form.html', form=form)
    

总结

  • Django 是一个全功能的框架,适合快速开发复杂的 Web 应用,特别是当你需要使用强大的后台管理界面、ORM 和用户身份验证时。
  • Flask 是一个轻量级框架,更灵活,适合较小的项目和 API 开发,需要你自己选择和配置各种库。

无论选择哪个框架,关键是根据项目需求和个人喜好,灵活运用这些工具进行开发。如果你想要更详细的代码示例或遇到任何问题,随时问我!


http://www.kler.cn/a/309164.html

相关文章:

  • 使用VSCode远程连接服务器并解决Neo4j无法登陆问题
  • 基于BILSTM及其他RNN序列模型的人名分类器
  • js中import引入一个export值可以被修改。vue,react
  • 如何使用IDEA创建Maven/SSM工程?
  • centos查看硬盘资源使用情况命令大全
  • rust模式和匹配
  • 多速率信号处理
  • sourceTree使用笔记
  • ClickHouse的安装配置+DBeaver远程连接
  • DP子序列问题
  • Spring Boot-静态资源管理问题
  • Spring Cloud全解析:服务调用之Feign的编解码器
  • WebSocket 协议
  • VMware vSphere 8.0 Update 3b 发布下载,新增功能概览
  • 飞速爆单!TikTok跨境选品逻辑大揭秘!
  • socat用法结合案例分析
  • 我的AI工具箱Tauri版-MoYin文本转语音
  • 算法训练——day14字母异位词
  • 计算机三级网络技术总结(二)
  • 【D3.js in Action 3 精译_022】3.2 使用 D3 完成数据准备工作
  • Golang | Leetcode Golang题解之第400题第N位数字
  • 通信工程学习:什么是LCAS链路容量调整机制
  • LLM大模型基础知识学习总结,零基础入门到精通 非常详细收藏我这一篇就够了
  • 1.接口测试基础
  • Selenium等待机制:理解并应用显式等待与隐式等待,解决页面加载慢的问题
  • golang实现正向代理http_proxy和https_proxy