文章目录
专栏列表
- Python教程(十):面向对象编程(OOP)
- Python教程(十一):单元测试与异常捕获
- Python教程(十二):面向对象高级编程详解
- Python教程(十三):常用内置模块详解
- Python教程(十四):Requests模块详解
- Python教程(十五):IO 编程
- Python教程(十六):进程、线程、线程锁
- Python教程(十七):协程、 asyncio与 aiohttp【异步IO】
前言
在当今的软件开发领域,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>
模板复用:
- 在
myapp/templates/
新建一个base.html
作为其他html的模板- 在模板中创建
block
,{% block content %} {% endblock %}
, 这个 content 可以随意修改- 修改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 %}
路由跳转
- 语法:
{%url 'path' 参数的key=value %}
, 示例:<a href="{%url 'about' index=item name='ziyu' %}">点击查看详情</a>
- 修改
myapp/urls.py
,re_path(r'about/(?P<index>[0-9]+)/(?P<name>\w+)/$', views.about, name='about')
+ 使用res_path
使用正则规范参数,P<index>
设置参数名为index
- 修改
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 应用程序。