Python教程(十八): 从零到一教会你用 Django【Web 开发】

专栏列表


前言

在当今的软件开发领域,Web 开发仍然是最受欢迎的方向之一。Python,作为一种简洁而强大的编程语言,通过其丰富的框架和库,为 Web 开发提供了强大的支持。本文将带你了解 Python 在 Web 开发中的应用,包括流行的框架、开发工具以及最佳实践。

Web 开发是指创建和维护网站和 Web 应用程序的过程。它通常分为前端开发后端开发前端关注用户界面和用户体验,而后端则处理服务器、数据库和应用程序逻辑。

1. 流行的 Python Web 框架

1.1 Django

Django 是一个高级的 Python Web 框架,它鼓励快速开发和干净、实用的设计。Django 自带了许多内置功能,如用户认证、内容管理、站点地图等。

1.2 Flask

Flask 是一个轻量级的 Web 框架,它提供了必要的工具来快速开发 Web 应用。Flask 的灵活性和简洁性使其成为小型项目和微服务的理想选择。

1.3 FastAPI

FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API。它基于标准 Python 类型提示,支持异步编程,非常适合构建高性能的 API 服务。

2. 开发环境搭建

2.1 安装 Python

首先,确保你的开发环境中安装了 Python。可以从Python 官网下载并安装。

2.2 安装 Django

  • pip install命令执行后,如果是项目中安装除了会再Libs/site-package里面添加django包之外,还会在Scripts文件夹中创建一个django-admin.exe文件,这个文件是个命令行工具,能够帮我们直接创建django项目
  • 会在 python的安装目录下的 Scripts 下新增 django-admin.exe,这样就能全局使用 django-admin (推荐使用)
pip install Django

还可以新建一个虚拟化环境:(避免污染全局

python -m venv test-env
# source test-env/bin/activate  # 在 Unix 或 MacOS 上
test-env\Scripts\activate  # 在 Windows 上

# 在新的环境中执行安装和初始化项目
pip install Django

3. 初始化 Web 应用

3.1 创建 Django 应用

创建一个 Django 项目和应用,然后运行开发服务器。

django-admin startproject djangoDemo 
cd djangoDemo

3.2. 运行

py manage.py runserver
# 默认8000 也可以指定修改
# py manage.py runserver 8080 

在这里插入图片描述

在这里插入图片描述

3.3 项目解析:

目录结构:

djangoDemo
├───manage.py  # 启动一个 web 服务器
└───djangoDemo
        settings.py  # 网站的配置数据
        asgi.py
        urls.py  # 包含urlresolver所需的模型的列表。.
        wsgi.py
        __init__.py

4. 创建 Django 应用

4.1 创建应用

在 Django 项目中,一个应用是一个专门用来完成某项任务的小包。运行以下命令来创建一个应用:

python manage.py startapp myapp

这将创建一个名为 myapp 的目录。
目录结构:

djangoDemo
├── djangoDemo
|       __init__.py
|       settings.py
|       urls.py
|       wsgi.py
├── manage.py
└── myapp
    ├── migrations
    |       __init__.py
    ├── __init__.py
    ├── admin.py
    ├── models.py
    ├── tests.py
    └── views.py

4.2 注册应用

myproject/settings.py 文件中,将新创建的应用添加到 INSTALLED_APPS 列表中:

INSTALLED_APPS = [
    # ...
    'myapp',
]

5. 创建测试页面

5.1 定义 URL

myapp 目录中,创建一个 urls.py 文件,并定义两个 URL 模式:

from django.urls import path
from . import views

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

5.2 包含应用的 URL

djangoDemo/urls.py 文件中,包含 myapp 的 URL 配置:

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

urlpatterns = [
    path('admin/', admin.site.urls), # 默认自带的
    path('', include('myapp.urls')),  # 包含 myapp 的 URL
]

5.3 创建视图

myapp/views.py 文件中,创建两个视图函数:

from django.http import HttpResponse

def home(request):
    return HttpResponse("Welcome to the Home Page!")

def about(request):
    return HttpResponse("Welcome to the About Page!")

5.4 创建模板(可选)

为了使页面更加美观,你可以创建 HTML 模板。在 myapp 目录下创建一个 templates 目录,并在该目录下创建两个 HTML 文件:

home.html:

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to the Home Page template!</h1>
</body>
</html>

about.html:

<!DOCTYPE html>
<html>
<head>
    <title>About Page</title>
</head>
<body>
    <h1>Welcome to the About Page!</h1>
</body>
</html>

然后,在 views.py 中修改视图函数以使用模板:

from django.shortcuts import render

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

def about(request):
    return render(request, 'about.html')

6. 运行和测试

确保你的开发服务器正在运行,然后在浏览器中访问以下 URL 来查看你的页面:

  • http://127.0.0.1:8000/home/
    在这里插入图片描述

  • http://127.0.0.1:8000/about/ - 将显示 “Welcome to the About Page!”
    在这里插入图片描述

7. Django模板:

基础语法

  • 获取变量: 使用两个大括号, 并将变量包含在里面 {{ name}}
  • 循环集合:所有的在{% for %}{% endfor %} 之间的内容将会被Django对象列表中的每个对象所代替
   {% for post in posts %}
        {{ post }}
   {% endfor %}

数据传输至模板

修改之前的home.html hom 函数

#view.py
def home(request):
    # 第三个参数就是给模板传值
    return render(request,"home.html", {"title":"数字列表", "list":[1,2,3,4]} )

home.html

<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <h1>Welcome to the Home Page template!</h1>
    <p>{{title}}</p>
    <ul>
        {% for item in list %}
        <li>{{ item }}</li>
        {% endfor %}
    </ul>

</body>
</html>

在这里插入图片描述

静态文件处理:

在 myapp 应用下创建一个 static/image目录,放入一个js.png文件,
在 home.html 文件的顶部放入 {% load static %} , 在html文件需要的地方放置 {% static '文件路径' %},插入文件模板语法

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <img src="{% static 'image/js.png' %}" />
    <h1>Welcome to the Home Page template!</h1>
    <p>{{title}}</p>
    <ul>
        {% for item in list %}
        <li>{{ item }}</li>
        {% endfor %}
    </ul>
</body>
</html>

在这里插入图片描述

模板复用:

  1. myapp/templates/ 新建一个base.html 作为其他html的模板
  2. 在模板中创建block, {% block content %} {% endblock %} , 这个 content 可以随意修改
  3. 修改home.html , 文件头部引用{% extends 'base.html' %} , 文件内部的代码段需要使用 {% block title %} {% endblock %} 包裹

详细代码:
base.html

{% load static %}
<!DOCTYPE html>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
    <img src="{% static 'image/js.png' %}" />
    {% block title %}
    {% endblock %}
    <hr />
    {% block list %}
    {% endblock %}
    <p>footer text </p>
</body>
</html>

home.html

{% extends 'base.html' %}
{% block title %}
<h1>Welcome to the Home Page template!</h1>
{% endblock %}
{% block list %}
<p>{{title}}</p>
<ul>
    {% for item in list %}
    <li>{{ item }}</li>
    {% endfor %}
</ul>
{% endblock %}

在这里插入图片描述

路由跳转

  1. 语法:{%url 'path' 参数的key=value %} , 示例: <a href="{%url 'about' index=item name='ziyu' %}">点击查看详情</a>
  2. 修改myapp/urls.py , re_path(r'about/(?P<index>[0-9]+)/(?P<name>\w+)/$', views.about, name='about')
    + 使用 res_path 使用正则规范参数,P<index> 设置参数名为 index
  3. 修改view.py 文件,给about函数添加参数: def about(request,index,name):

示例代码:

home.html

{% extends 'base.html' %}

{% block title %}
<h1>Welcome to the Home Page template!</h1>
{% endblock %}

{% block list %}
<p>{{title}}</p>
<ul>
    {% for item in list %}
    <li>{{ item }}. <a href="{%url 'about' index=item name='ziyu' %}">点击查看详情</a> </li>
    {% endfor %}
</ul>
{% endblock %}

views.py

def about(request,index,name):
    return render(request,"about.html", {"index":index , "name":name} )

about.html

<!DOCTYPE html>
<html>
<head>
    <title>About Page</title>
</head>
<body>
    <h1>Welcome to the About Page!</h1>
    <p>index:{{index}}</p>
    <p>name:{{name}}</p>
</body>
</html>

在这里插入图片描述
在这里插入图片描述

8. 发布

9. 结论

通过本教程,你已经成功搭建了一个 Django 项目,并创建了两个简单的测试页面。Django 的强大功能和灵活性使其成为 Web 开发的优选框架。你可以继续探索 Django 的更多高级特性,如模型、表单、类视图等,来构建更复杂的 Web 应用程序。

10. 参考资源

  • 25
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子羽bro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值