凌峰创科服务平台

Python如何助力网站建设?

下面我将为你提供一个全面、结构化的 Python 网站建设指南,从核心概念、技术选型到实战步骤,助你从零开始。

Python如何助力网站建设?-图1
(图片来源网络,侵删)

核心概念:网站是如何工作的?

在开始之前,你需要理解几个基本概念:

  1. 前端:用户在浏览器中直接看到和交互的部分。

    • HTML (超文本标记语言):定义网页的结构和内容(骨架)。
    • CSS (层叠样式表):负责网页的视觉表现(如颜色、布局、字体)。
    • JavaScript:实现网页的动态交互和复杂逻辑(如动画、表单验证)。
  2. 后端:在服务器上运行,用户看不到的部分,它负责处理业务逻辑、数据库交互和用户认证等。

    • Web 框架:Python 后端的核心,它提供了一套工具和规则,让你不必从零开始处理网络请求、路由、模板等复杂问题。
    • WSGI 服务器:一个“桥梁”,负责接收来自互联网的请求,并将其传递给 Python Web 框架处理,最后将处理结果返回给用户,Gunicorn, uWSGI。
  3. 数据库:用于持久化存储网站的数据(如用户信息、文章、商品列表)。

    Python如何助力网站建设?-图2
    (图片来源网络,侵删)
    • 关系型数据库:使用表格存储数据,结构化,有严格的模式,如:MySQL, PostgreSQL
    • 非关系型数据库:数据存储方式更灵活,适合处理非结构化或半结构化数据,如:MongoDB, Redis (常用于缓存)。

工作流程简图:

用户浏览器 <---> WSGI服务器 (如 Gunicorn) <---> Python Web框架 (如 Django) <---> 数据库 (如 PostgreSQL)


技术选型:Python Web 框架怎么选?

Python 有几个主流的 Web 框架,各有侧重,选择哪个取决于你的项目需求。

框架 特点 适合场景 学习曲线
Django “全能型”“开箱即用”,自带强大的后台管理、ORM、用户认证、路由系统等,遵循“不要重复自己”(DRY)的原则。 大型、复杂、数据驱动的网站,如电商、社交网络、内容管理系统。 中等
Flask “微框架”,轻量、灵活,核心简单,但通过扩展可以实现几乎所有功能,需要你自己选择和集成组件(如数据库、ORM)。 小型项目、API 服务、快速原型、作为微服务的一部分 较低
FastAPI 现代、高性能,专为 API 设计,支持异步,自动生成交互式 API 文档(Swagger UI),类型提示支持好。 构建高性能 API、微服务、实时应用 中等
Tornado 异步非阻塞框架,特别擅长处理大量并发连接。 聊天应用、实时推送服务、需要高并发的场景 较高

给新手的建议:

Python如何助力网站建设?-图3
(图片来源网络,侵删)
  • 想快速做一个功能完整的网站,并且不关心底层细节? -> 选择 Django,它的“电池已包含”(Batteries-included)哲学能让你事半功倍。
  • 想学习 Web 开发的核心原理,做一个轻量级的项目或 API? -> 选择 Flask,它更“Pythonic”,能让你更好地理解各个组件是如何协同工作的。
  • 想构建高性能的 API 或微服务? -> 选择 FastAPI,它是目前 API 开发的热门选择。

实战指南:使用 Django 构建你的第一个网站

我们将以 Django 为例,因为它对新手最友好,功能最全面。

第 1 步:环境准备

  1. 安装 Python:确保你的系统已安装 Python 3.8+。

  2. 创建虚拟环境:这是最佳实践,可以隔离项目依赖。

    # 创建一个名为 myproject_env 的虚拟环境
    python -m venv myproject_env
    # 激活虚拟环境
    # Windows:
    myproject_env\Scripts\activate
    # macOS/Linux:
    source myproject_env/bin/activate
  3. 安装 Django

    pip install django

第 2 步:创建项目和应用

  1. 创建 Django 项目

    # myproject 是你的项目名
    django-admin startproject myproject
    cd myproject

    这会生成以下目录结构:

    myproject/
    ├── manage.py          # 命令行工具,用于与项目交互
    └── myproject/         # 项目配置包
        ├── __init__.py
        ├── asgi.py       # ASGI 服务器入口
        ├── settings.py   # 项目的核心配置文件
        ├── urls.py       # 项目的 URL 声明
        └── wsgi.py       # WSGI 服务器入口
  2. 创建 Django 应用: 一个项目可以包含多个应用,应用是 Web 应用的一块独立功能。

    # blog 是我们的应用名
    python manage.py startapp blog

    目录结构会新增 blog/ 文件夹。

第 3 步:定义模型

模型是数据库中数据表的 Python 表现,我们在 blog/models.py 中定义文章模型。

# blog/models.py
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):= models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    def __str__(self):
        return self.title

第 4 步:配置和迁移数据库

  1. 注册应用:在 myproject/settings.pyINSTALLED_APPS 列表中添加我们的 blog 应用。

    # myproject/settings.py
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog.apps.BlogConfig',  # 添加这行
    ]
  2. 创建迁移文件:Django 会根据模型的变化生成数据库迁移脚本。

    python manage.py makemigrations
  3. 应用迁移:将迁移文件应用到数据库,创建数据表。

    python manage.py migrate

第 5 步:创建管理后台

Django 自带一个强大的后台管理界面。

  1. 创建超级用户

    python manage.py createsuperuser

    按提示输入用户名、邮箱和密码。

  2. 注册模型:在 blog/admin.py 中将我们的 Post 模型注册到后台。

    # blog/admin.py
    from django.contrib import admin
    from .models import Post
    admin.site.register(Post)
  3. 运行服务器并访问后台

    python manage.py runserver

    打开浏览器,访问 http://127.0.0.1:8000/admin/,用超级用户账号登录,你就可以在这里创建、编辑和删除文章了!

第 6 步:创建视图和 URL

视图是处理请求并返回响应的函数,URL 是访问特定视图的地址。

  1. 创建视图:在 blog/views.py 中编写一个显示文章列表的视图。

    # blog/views.py
    from django.shortcuts import render
    from .models import Post
    def post_list(request):
        posts = Post.objects.all().order_by('-created_at')
        return render(request, 'blog/post_list.html', {'posts': posts})
  2. 创建模板

    • blog 应用下创建一个 templates/blog/ 目录。
    • 在该目录下创建 post_list.html 文件:
      <!-- blog/templates/blog/post_list.html -->
      <!DOCTYPE html>
      <html>
      <head>
          <title>My Blog</title>
      </head>
      <body>
          <h1>My Blog Posts</h1>
          <ul>
              {% for post in posts %}
                  <li>
                      <h2>{{ post.title }}</h2>
                      <p>{{ post.content|truncatewords:30 }}</p>
                      <small>By {{ post.author }} on {{ post.created_at }}</small>
                  </li>
              {% endfor %}
          </ul>
      </body
分享:
扫描分享到社交APP
上一篇
下一篇