pythonweb开发从入门到精通电子版(零基础Python实践教程——第7章:实践案例(Web应用程序))python初学 / python在Web开发中的实践...

wufei123 发布于 2024-05-18 阅读(13)

第七章:实践案例7.2 Web应用程序案例Web应用程序是一种通过Web浏览器进行访问和交互的应用程序,它在当今互联网时代具有广泛的应用本章将介绍一个基于Flask或Django框架构建的简单博客系统的实践案例。

通过这个案例,我们将学习如何进行用户认证和权限控制,以及如何实现数据展示和交互功能7.2.1 环境设置和框架安装在开始之前,我们需要设置开发环境并安装所需的框架假设我们选择使用Flask作为Web框架以下是环境设置和框架安装的示例操作:。

pythonweb开发从入门到精通电子版(零基础Python实践教程——第7章:实践案例(Web应用程序))python初学 / python在Web开发中的实践...

1. 安装Python:访问Python官方网站(python.org)下载并安装适用于您操作系统的Python版本2. 创建虚拟环境:在命令行中执行以下命令创建一个新的虚拟环境   `````shell。

   python -m venv myenv   ```3. 激活虚拟环境:在命令行中执行以下命令激活虚拟环境   - Windows:     ```shell     myenv\Scripts\activate。

     ```   - macOS/Linux:     ```shell     source myenv/bin/activate     ```4. 安装Flask:在激活的虚拟环境中执行以下命令安装Flask。

   ````shell   pip install Flask   ```7.2.2 创建Flask应用程序在设置好开发环境和安装Flask之后,我们可以开始创建Flask应用程序以下是创建一个简单的Flask应用程序的示例代码:。

```pythonfrom flask import Flask, render_templateapp = Flask(__name__)@app.route(/)def index():    return Welcome to the Blog

if __name__ == __main__:    app.run()```我们导入了Flask库并创建了一个Flask应用程序然后,我们定义了一个路由`/`和对应的处理函数`index()`,该函数返回一个简单的欢迎消息。

最后,我们使用`app.run()`运行应用程序7.2.3 用户认证和权限控制在博客系统中,用户认证和权限控制是非常重要的功能它允许用户注册、登录和管理他们的博客内容以下是实现用户认证和权限控制的示例代码:。

```pythonfrom flask import Flask, render_template, request, redirect, url_forfrom flask_login import LoginManager, UserMixin, login_user, logout_user, login_required

app = Flask(__name__)app.secret_key = your_secret_keylogin_manager = LoginManager(app)class User(UserMixin):

    def __init__(self, id):        self.id = id@login_manager.user_loaderdef load_user(user_id):    return User(user_id)

@app.route(/)def index():    return Welcome to the Blog@app.route(/login, methods=[GET, POST])def login():

    if request.method == POST:        user_id = request.form[user_id]        user = User(user_id)        login_user(user)

        return redirect(url_for(dashboard))    return render_template(login.html)@app.route(/logout)@login_required

def logout():    logout_user()    return redirect(url_for(index))@app.route(/dashboard)@login_required

def dashboard():    return Welcome to the Dashboardif __name__ == __main__:    app.run()```我们引入了`flask_login`库来处理用户认证和权限控制。

我们创建了一个`User`类作为用户模型,并使用`login_manager.user_loader`装饰器加载用户我们定义了登录、注销和仪表板路由,并使用`@login_required`装饰器限制只有登录用户才能访问相应的页面。

在登录函数中,我们通过验证用户提供的凭据来登录用户,并使用`login_user`函数将用户登录状态保存在会话中7.2.4 数据展示和交互功能除了用户认证和权限控制之外,博客系统还需要实现数据展示和交互功能,如创建博客文章、展示文章列表、查看单篇文章等。

以下是实现数据展示和交互功能的示例代码:```pythonfrom flask import Flask, render_template, request, redirect, url_forfrom flask_login import LoginManager, UserMixin, login_user, logout_user, login_required

import sqlite3app = Flask(__name__)app.secret_key = your_secret_keylogin_manager = LoginManager(app)# ... 用户认证和权限控制的代码 ...

@app.route(/create_post, methods=[GET, POST])@login_requireddef create_post():    if request.method == POST:

        title = request.form[title]        content = request.form[content]        author = current_user.id

        conn = sqlite3.connect(blog.db)        cursor = conn.cursor()        cursor.execute("INSERT INTO posts (title, content, author) VALUES (?, ?, ?)",

                       (title, content, author))        conn.commit()        conn.close()        return redirect(url_for(dashboard))

    return render_template(create_post.html)@app.route(/posts)@login_requireddef posts():    conn = sqlite3.connect(blog.db)

    cursor = conn.cursor()    cursor.execute("SELECT * FROM posts")    posts = cursor.fetchall()    conn.close()

    return render_template(posts.html, posts=posts)@app.route(/posts/)@login_requireddef view_post(post_id):

    conn = sqlite3.connect(blog.db)    cursor = conn.cursor()    cursor.execute("SELECT * FROM posts WHERE id=?", (post_id,))

    post = cursor.fetchone()    conn.close()    return render_template(view_post.html, post=post)if __name__ == __main__:

    app.run()```在上述示例中,我们使用SQLite数据库来存储博客文章我们定义了创建博客文章、展示文章列表和查看单篇文章的路由在创建博客文章的函数中,我们接收用户提交的标题和内容,并将文章信息插入到数据库中。

在展示文章列表和查看单篇文章的函数中,我们从数据库中检索文章信息,并将其传递给相应的模板进行展示7.2.5 模板和静态文件在博客系统中,我们使用模板来渲染页面并展示数据此外,我们还可以使用静态文件来加载CSS样式表、JavaScript脚本等。

以下是模板和静态文件的示例代码:```html 

  {% for post in posts %} 

{{ post[1] }}

{{ post[2] }}

  Read More{% endfor %}

{{ post[1] }}

{{ post[2] }}

```我们使用Flask的模板引擎来渲染HTML页面我们使用双花括号`{{ ... }}`来插入动态数据和变量,并使用控制结构如`{% ... %}`来处理循环和条件逻辑。

为了加载静态文件,我们可以在应用程序的根目录下创建一个名为`static`的文件夹,并将CSS样式表、JavaScript脚本等文件放置在其中然后,在模板中使用`url_for(static, filename=...)`来引用静态文件的URL。

通过以上步骤,我们完成了一个使用Flask构建的简单博客系统。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

大众 新闻61988