搜尋
首頁後端開發Python教學使用 Python 建立動態網站:初學者指南

如何開始使用 Python 建立網站?好吧,您可以自己完成這一切並編寫一個在 Web 伺服器上運行的程序,接受頁面請求並以 HTML 和其他資源的形式提供回應。然而,這是一項繁重的工作,那麼當有大量現有工具可以為您完成這項工作時,為什麼還要費盡心思呢?這些工具稱為框架,我們今天將使用它們來建立我們的網站。

Python 框架

Python Web 框架有很多,但以下是最好的:

  • Django:我們今天將使用它。它具有大量功能,但仍然易於使用。文件也非常出色,因此如果您遇到困難,可以使用 Django 最輕鬆地解決問題。
  • Flask:Flask 是一個輕量級 Web 應用程式微框架,旨在讓您輕鬆上手,因為它有許多擴展,可以輕鬆添加新功能。
  • FastAPI:FastAPI 是一個現代的高效能 Web 框架,用於使用 Python 3.6 建立 API。它還易於使用,並提供自動完成和 linting 功能,使編寫程式碼比使用其他框架更快。
  • Falcon:Falcon 是一個極簡 Web 框架,用於建立快速 Web API 和應用程式後端。 Falcon 提供簡潔的設計,使用 HTTP 和 REST 架構風格來快速建立 API。

如果您需要其他選項,可以在 Python 網站上找到更全面的清單。今天我們將在本機上設定 Django 進行開發,然後建立一個簡單的部落格。我們還將回顧在遠端 Web 伺服器上安裝它的過程。

安裝 Django

今天我們將在終端機中執行大部分工作。這應該可以在 Mac 和 Linux 上運行;但是,如果您運行的是 Windows,則過程會有所不同。如果您只編寫 Python,則無需熟悉命令列,但如果您打算使用 Django 或運行一般的動態網站,則值得學習。

終端教學

考慮查看這些教學來讓自己開始使用終端:

  • 在終端機中工作的介紹,其中也涵蓋了 Git 和 GitHub
  • #在終端機中加快工作速度的 10 個技巧

以下是安裝 Django 所需的指令。您需要安裝 Python 3 版本才能運行它。首先,您需要使用 venv 模組建立一個虛擬環境。來自 Python 文檔:

<span>venv</span> 模組支援使用自己的網站目錄建立輕量級“虛擬環境”,可以選擇與系統網站目錄隔離。每個虛擬環境都有自己的 Python 二進位檔案(與用於建立此環境的二進位檔案的版本相符),並且可以在其網站目錄中擁有自己獨立的一組已安裝的 Python 套件。

建立專案目錄並在專案目錄內建立虛擬環境。

mkdir Django_projects
cd Django_projects
python3.8 -m venv env

啟動虛擬環境並建立一個新的 Django 專案。

source env/bin/activate
django-admin.py startproject FirstBlog

專案目錄如下所示:

使用 Python 构建动态网站:初学者指南

#每個文件的作用是什麼?

  • __init__.py告訴Python該資料夾是一個Python套件。我們在第三課中學到了這些;它允許 Python 將資料夾中的所有腳本作為模組導入。
  • maage.py 實際上並不是您網站的一部分;它是一個從命令列運行的實用程式腳本。它包含一系列用於管理您的網站的函數。
  • settings.py 包含您網站的設定。 Django 不使用 XML 檔案進行配置;一切都是Python。該文件只是一些定義您網站設定的變數。
  • urls.py 是將 URL 對應到頁面的檔案。例如,它可以將 yourwebsite.com/about 對應到關於我們頁面。

應用程式

但是,這些文件本身都無法構成一個功能性網站。為此,我們需要應用程式。應用程式是您編寫使網站正常運行的程式碼的地方,但在我們研究它們之前,我們需要了解一些 Django 的設計原則。

首先,Django是一個MVC框架,它代表模型視圖控制器。 Django 將自己稱為 MTV 框架,代表模型模板視圖。它與 MVC 的方法略有不同,但從根本上來說,它們非常相似。無論如何,MVC 是一種架構模式,它提供了一種建構專案的方法。它將用於處理資料的程式碼與管理使用者介面的程式碼分開。

其次,Django 遵循 DRY(不要重複自己)的理念,這意味著您永遠不應該編寫多次執行某個任務的程式碼。例如,在我們的部落格中,如果我們編寫了一個功能,從存檔中隨機選擇一篇文章並在多個頁面上實現該功能,那麼我們就不會在每次需要時再次編碼。我們對其進行一次編碼,然後在每個頁面上使用它。

那么这与应用程序有何关系?好吧,应用程序允许您以 DRY 风格编写网站。每个项目(就像我们这里的项目一样)都可以包含多个应用程序。相反,每个应用程序可以是多个项目的一部分。使用前面的示例,这意味着如果我们将来创建另一个也需要随机页面功能的网站,我们就不必重新编写它。我们可以简单地从该项目导入应用程序。

因此,每个应用都有一个不同的用途,这一点很重要。如果您在一个应用程序中编写了网站的所有功能,然后您需要稍后再次使用其中的一部分,则必须将其全部导入。例如,如果您正在制作一个电子商务网站,您不会想导入所有博客功能。但是,如果您为随机功能制作一款应用程序,为博客发布系统制作一款应用程序,则您可以挑选所需的部分。

这也意味着在网站内,代码组织良好。如果你想改变一项功能,你不必搜索一个庞大的文件;您可以浏览到相关应用程序并进行更改,而不必担心干扰其他任何内容。

python3.8 manage.py startapp blog

目录结构现在如下所示:

使用 Python 构建动态网站:初学者指南

同样,我们有一个 __init__.py 文件来使其成为一个包,以及其他三个文件:模型、测试和视图。我们现在不需要担心测试,但其他两个很重要。模型和视图是 MVC 的 MV 部分。

在模型中,我们定义数据结构。

如果您以前使用过 PHP,您可能使用 PhpMyAdmin 创建 MySQL 表,然后在 PHP 脚本中手动编写 SQL 查询。在 Django 中,这要容易得多。我们在此模型文件中定义所需的所有数据结构,然后运行命令,所有必要的数据库都会为我们创建。

当您希望访问该数据时,您可以通过调用这些模型的方法来访问这些模型,而不是运行原始查询。这非常有帮助,因为 Django 可以使用多个数据库程序。今天我们将使用 MySQL,因为它是最强大的,并且是大多数主机提供的,但如果我们将来需要切换到不同的数据库,所有代码仍然有效!在其他语言中,如果您想切换到 SQLite 或类似的语言,则需要重写访问数据库的代码。

在视图文件中,我们编写实际生成网页的代码。这将所有其他部分联系在一起。当用户输入 URL 时,它会由我们之前看到的 urls 脚本发送到 views 脚本,然后从模型中获取相关数据,对其进行处理,并将其传递到模板中,最终得到服务作为用户看到的页面。我们很快就会看一下这些模板。它们是最简单的部分——主要是 HTML。

将博客应用添加到settings.py文件中的INSTALLED_APPS列表中。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

对于博客,我们需要一个帖子表,其中包含标题、正文、作者、撰写时间等多个字段。真正的博客会有评论,但这超出了今天演示的范围。

from django.db import models

class posts(models.Model):
    author = models.CharField(max_length = 30)
    title = models.CharField(max_length = 100)
    bodytext = models.TextField()
    timestamp = models.DateTimeField()

MySQL

这些模型只是一个描述。我们需要根据它们创建一个实际的数据库。然而,首先我们需要在我们的系统上运行 MySQL。在实际的网络服务器上,这不会成为问题,因为他们通常已经预先安装了它。

要安装 MySQL,请键入:

sudo apt install mysql-server

要检查安装是否成功,请使用:

mysql --version

这应该返回类似这样的内容:

mysql  Ver 14.14 Distrib 5.7.33, for Linux (x86_64) using  EditLine wrapper

现在,为 Django 项目创建一个 MySQL 数据库。使用 sudo mysql 运行 MySQL,并在提示符处输入:

CREATE DATABASE django_blog;
CREATE USER 'django'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
GRANT ALL ON django_blog.* TO 'django'@'localhost';

FLUSH PRIVILEGES;

启动开发服务器

您现在可以在新选项卡中运行 python3.8 manange.py runserver 来启动开发服务器。

但首先,我们需要配置数据库设置。我们来看看settings.py

您需要先更改数据库设置。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_blog',                      # Or path to database file if using sqlite3.
        'USER': 'django_user',                      # Not used with sqlite3.
        'PASSWORD': 'password',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    }
}

现在运行服务器并在网络浏览器中访问 127.0.0.1:8000。您应该会看到默认的 Django 页面。

使用 Python 构建动态网站:初学者指南

在 Django 中配置博客

现在,让我们将 Django 网站变成一个博客。首先,我们需要使用模型在数据库中创建表,方法是创建以下迁移以影响对模型所做的更改。

python3.8 manage.py makemigrations
Migrations for 'blog':
  blog/migrations/0003_post.py
    - Create model Post

现在,运行迁移以在数据库中创建表。

python3.8 manage.py migrate


创建超级用户

现在,您可以创建一个超级用户来管理您的 Django 应用程序。

python3.8 manage.py createsuperuser

设置应用 URL

让我们在 urls.py 文件中设置应用程序的 URL。我们将包含来自单独文件的博客网址。

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
     path("", include('blog.urls')),
]

创建第一个视图

让我们创建第一个视图,它将呈现一个简单的 HTML 页面。打开 blog/views.py 并添加以下代码。

from django.shortcuts import render

from .models import Post

def home(request):
    return render('index.html')

创建视图模板

index.html 文件尚不存在。 Django 会自动从模板目录加载模板。在博客应用中创建一个名为 templates 的文件夹,并在其中创建一个名为 index.html 的文件。文件夹目录应如下所示:

blog
  -templates
     -blog
        -index.html
      

index.html中添加以下代码。

<!DOCTYPE html>

<html lang="en">

<head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="css/style.css">
    <link href="images/favicon.ico" rel="shortcut icon">
    <title>First Blog</title>
</head>

<body>

<div class="container">
    <h1 id="First-Blog">First Blog</h1>
    <h2 id="Title">Title</h2>
    <h3 id="Posted-on-date-by-author">Posted on date by author</h3>
    <p>Body Text</p>

</div>

</body>
    
</html>

现在,我们将创建博客 URL。在博客目录中创建文件 urls.py 并写入用于提供索引页面的 URL 路径。

from django.urls import path

from . import views

urlpatterns = [
  
   path('', views.home),
  
   
]


现在,如果您导航到 http://127.0.0.1:8000/home,您应该会看到以下内容页面更新了此新内容。

使用 Python 构建动态网站:初学者指南

嵌入数据库中的数据

下一步是从数据库添加动态内容。为了实现这一点,Django 有一种模板语言,允许您使用花括号嵌入变量。将页面的中间部分更改为如下所示:

<div class="container">
    <h1 id="First-Blog">First Blog</h1>
    <h2 id="title">{{ title }}</h2>
    <h3 id="Posted-on-date-by-author">Posted on {{ date }} by {{ author }}</h3>
    <p>{{ body }}</p>

</div>

然后,我们可以通过创建值字典,将值从 views.py 文件传递​​给这些变量占位符。

def home(request):
    content = {
        'title' : 'My First Post',
        'author' : 'Giles',
        'date' : '18th September 2011',
        'body' : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam cursus tempus dui, ut vulputate nisl eleifend eget. Aenean justo felis, dapibus quis vulputate at, porta et dolor. Praesent enim libero, malesuada nec vestibulum vitae, fermentum nec ligula. Etiam eget convallis turpis. Donec non sem justo.',
    }
    return render(request,'blog/index.html', content)

保存并刷新,您应该看到现在正在将内容从视图文件传递到模板。最后一步是从我们的数据库获取数据并将其传入。幸运的是,我们可以通过使用 Django 模型来做到这一点,而无需 SQL 查询。转到 blog/views.py 并更新代码以从数据库获取数据。

def home(request):
    posts = Post.objects.all()[:10]
    return render(request,'blog/index.html', {"posts":  posts})

接下来,更新模板以访问此数据。

<body>

    <div class="container">
        <h1 id="First-Blog">First Blog</h1>
        <hr />
        {% for post in posts %}
            <div class="post">
            <h2 id="post-title">{{ post.title }}</h2>
            <h3 id="Posted-on-post-timestamp-by-post-author">Posted on {{ post.timestamp }} by {{ post.author }}</h3>
            <p>{{ post.bodytext }}</p>
            </div>
            <hr />
        {% endfor %}
    </div>
    

</body>

在这里,我们可以访问 views.py 文件中表中的所有数据,然后仅选择前十个条目。我们将此数据传递到模板中,循环访问条目,并使用我们网站的 HTML 显示数据。

Django 的管理系统

今天我们需要做的最后一件事是回顾 Django 的管理系统。这是 Django 的一个非常强大的功能,它允许您管理站点而无需编写更多代码,如果您从头开始创建站点,则必须这样做。为了让管理员控制您的 posts 表,我们将在 Django 管理中注册我们的 Post 模型,并在数据库中添加一些数据。打开 blog/admin.py 并添加以下代码。

from django.contrib import admin
from .models import Post

# Register your models here.

admin.site.register(Post)

您现在应该可以通过访问 http://127.0.0.1:8000/admin/blog/post/ 添加新的博客条目。

这就是所有要做的事情了。您刚刚创建了一个功能齐全但简单的博客。为了完成本课程,我们将了解如何在 Web 服务器上安装 Django。

在 Web 服务器上安装

网络托管有两种类型,您使用哪一种将影响您是否可以使用 Django。如果您使用共享托管,则您完全受主机的支配。

许多廉价的网络主机不支持 Python。虽然 PHP 几乎可以保证,但对其他语言的支持却常常无法保证。您必须检查控制面板以确定 Python(和 Django)是否可用。显然,每个主机的过程都略有不同。几乎所有托管都运行在 Apache 上,我们可以使用 mod_wsgimod_python Apache 模块,用它来托管 Django。

大多数网络主机使用 CGI 运行多种语言的脚本。 Django 可以在 FastCGI 上运行,理论上也可以在 CGI 上运行,但这并未得到官方支持,对于实际的生产网站来说速度太慢。您需要检查这些是否已安装。它们通常位于“CGI 和脚本语言支持”等标题下。

如果您有 VPS 托管,或者足够幸运拥有专用服务器,那么您的生活会轻松得多。通常这些都预装了 Python,从那里,您只需要按照我们所经历的相同步骤来获取运行的 Django 本地副本。如果您没有 Python,可以使用包管理器安装它。您的系统甚至可能附带 Django。

在服务器上安装 Django 后,使用任何文件传输客户端上传刚刚创建的站点。您可以将文件放在任何地方,但不要将它们放在 public 文件夹中,否则任何人都可以看到您网站的源代码。我的所有项目都使用 /home

接下来,在您的服务器上创建一个名为 django_blog 的 MySQL 数据库。您必须再次为管理控制面板创建帐户,但这是一次性的事情。

如果您尝试运行此程序,您可能会收到错误,这是因为服务器的设置与本地计算机上的设置不同。您可能需要更改 settings.py 中的数据库密码,但根据您的服务器配置,您可能还会遇到其他问题。在这些情况下,Google 是您的朋友!

这次运行服务器的命令略有不同。您必须指定 IP 地址和端口,以便可以通过 Internet 访问该站点。

python.8 manage.py runserver your-server-ip:8000

如果您在网络浏览器中通过端口 8000 访问您的网站,您应该会看到您的网站!

结论

这就是本课......以及我们的系列。我希望您在过去的五堂课中学到了许多有用的技能,并准备好在未来继续学习更多的 Python。如果您喜欢 Django 的外观并希望继续增加对该框架的了解,这里有一些关于该主题的附加教程:

一如既往,我很乐意在评论中讨论有关本教程或 Python 的任何问题。感谢您的阅读。

本文已根据 Esther Vaati 的贡献进行了更新。 Esther 是 Envato Tuts+ 的软件开发人员和作家。

以上是使用 Python 建立動態網站:初學者指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python與C:學習曲線和易用性Python與C:學習曲線和易用性Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python vs. C:內存管理和控制Python vs. C:內存管理和控制Apr 19, 2025 am 12:17 AM

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

科學計算的Python:詳細的外觀科學計算的Python:詳細的外觀Apr 19, 2025 am 12:15 AM

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

Python和C:找到合適的工具Python和C:找到合適的工具Apr 19, 2025 am 12:04 AM

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

數據科學和機器學習的Python數據科學和機器學習的PythonApr 19, 2025 am 12:02 AM

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

學習Python:2小時的每日學習是否足夠?學習Python:2小時的每日學習是否足夠?Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Web開發的Python:關鍵應用程序Web開發的Python:關鍵應用程序Apr 18, 2025 am 12:20 AM

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python vs.C:探索性能和效率Python vs.C:探索性能和效率Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具