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

子羽bro 2024-09-09 10:03:01 阅读 79

文章目录

专栏列表前言1. 流行的 Python Web 框架1.1 Django1.2 Flask1.3 FastAPI

2. 开发环境搭建2.1 安装 Python2.2 安装 Django

3. 初始化 Web 应用3.1 创建 Django 应用3.2. 运行3.3 项目解析:

4. 创建 Django 应用4.1 创建应用4.2 注册应用

5. 创建测试页面5.1 定义 URL5.2 包含应用的 URL5.3 创建视图5.4 创建模板(可选)

6. 运行和测试7. Django模板:基础语法数据传输至模板静态文件处理:模板复用:路由跳转

8. django部署9. 总结10. 参考资源

专栏列表

Python教程(十):面向对象编程(OOP)Python教程(十一):单元测试与异常捕获Python教程(十二):面向对象高级编程详解Python教程(十三):常用内置模块详解Python教程(十四):Requests模块详解Python教程(十五):IO 编程Python教程(十六):进程、线程、线程锁Python教程(十七):协程、 asyncio与 aiohttp【异步IO】


在这里插入图片描述

<code>正文开始 , 如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖


前言

在当今的软件开发领域,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 项目解析:

目录结构:

<code>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'),code>

path('about/', views.about, name='about'),code>

]

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/

在这里插入图片描述

<code>http://127.0.0.1:8000/about/ - 将显示 “Welcome to the About Page!”

在这里插入图片描述

7. Django模板:

基础语法

获取变量: 使用两个大括号, 并将变量包含在里面 <code>{ { 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 应用下创建一个 <code>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' %}" />code>

<h1>Welcome to the Home Page template!</h1>

<p>{ {title}}</p>

<ul>

{% for item in list %}

<li>{ { item }}</li>

{% endfor %}

</ul>

</body>

</html>

在这里插入图片描述

模板复用:

在 <code>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' %}" />code>

{% 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 %}

在这里插入图片描述

路由跳转

语法:<code>{%url 'path' 参数的key=value %} , 示例: <a href="{%url 'about' index=item name='ziyu' %}">点击查看详情</a>code>修改myapp/urls.py , re_path(r'about/(?P<index>[0-9]+)/(?P<name>\w+)/$', views.about, name='about')code>

+ 使用 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>code>

{% 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. django部署

将项目推送到github上,然后clone 项目地址

使用 pythonanywhere 来部署项目

先创建账号,登录的时候是 使用用户名+密码登录

在这里插入图片描述

登录成功进入控制台

点击Console中的<code>$Bash 打开一个控制台

在这里插入图片描述

分别运行下面命令

<code>git clone https://github.com/jiatingyu/djangoDemo.git

cd djangoDemo

python -m venv myenv

source myvenv/bin/activate

pip install django #等待安装成功

退出控制台,进入 web apps , 有 3 个位置需要设置,参考截图,一般就将用到 ziyubro 换成你自己的用户名

6.1 Code , 设置好Source code , Working directory , 修改你们username,编辑 WSGI configuration file:

在这里插入图片描述

configuration file修改的代码:

<code> import os

import sys

# assuming your django settings file is at '/home/ziyubro/mysite/mysite/settings.py'

# and your manage.py is is at '/home/ziyubro/mysite/manage.py'

path = '/home/ziyubro/djangoDemo'

if path not in sys.path:

sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'djangoDemo.settings'

# then:

from django.core.wsgi import get_wsgi_application

application = get_wsgi_application()

6.2 修改 Virtualenv:

在这里插入图片描述

6.3 设置 static Files:

在这里插入图片描述

在最顶上点击 reload

在这里插入图片描述

修改设置

最后 <code>djangoDemo/settings.py文件中,找到ALLOWED_HOST 数组,在数组中添加 现有域名,ps: ["ziyubro.pythonanywhere.com"]

预览:

在这里插入图片描述

9. 总结

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

10. 参考资源

Django 官方文档Django 教程Two Scoops of DjangoFlask 官方文档FastAPI 官方文档Python 官方文档



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。