28. Python Web 编程:Django 基础教程

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 28. Python Web 编程:Django 基础教程

安装使用

Django 项目主页:https://www.djangoproject.com

访问官网 https://www.djangoproject.com/download/ 或者 https://github.com/django/django

'''Windows 按住win+R 输入 cmd,Mac 打开Terminal
pip install Django==3.1.7
或者
git clone https://github.com/django/django.git
'''
# 输入python进入解释器,查看版本
import django
print(django.VERSION)
exit()

创建项目

一个网站可以包含多个Django项目,一个Django项目包含多个应用,又包含一组特定的对象,创建项目的基本步骤如下:

  1. 新建文件夹用来存放项目,然后使用cd命令切换到该文件夹下。
  2. 输入下面命令,在该目录中新建一个mysite项目。
adjango-admin startproject mysite
zsh: command not found: adjango-admin
# 报错原因是因为没配置路径,在这里就不展示配置路径,直接用绝对路径执行,如下
/Users/guanfawang/opt/anaconda3/lib/python3.9/site-packages/django/bin/django-admin.py startproject mysite

  • manage.py:Django 管理主程序,也是实用的命令工具,方便管理Django项目,同时方便用户以各种方式与Django项目进行交互。
  • __init__.py:一个空文件,告诉Python该目录是一个Python包。
  • settings.py:全局配置文件。包括Django模块应用配置、数据库配置、模版配置等。
  • urls.py:路由配置文件,包含URL的配置文件,也是用户访问Django应用的方式。
  • wigs.py:一个与WSGI 兼容的Web服务器入口,以便运行项目,相当于网络通信模块。

这些文件仅仅包含一个最简单的Web应用所需要的代码。当Web应用变得复杂时,将对这些代码进行扩充。

启动服务器

执行下面代码,启动Web服务器。

cd mysite
python manage.py runserver

复制网址,浏览器打开,可以看到下面情况,说明Web服务器启动成功。

使用Ctrl+C中断该服务器。

创建数据库

Django 内置SQLite数据库,同时支持更多的数据库,如MySQL、PostgreSQL等,每个Django应用目录中都包含一个settings.py文件,可以用来实现对数据库的配置。

# 源settings.py文件默认sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

# 可以将它修改成mysql
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '11111111',
        'NAME': 'webname'
    }
}

# 输入一下命令创建
python manage.py migrate
'''报错:原因是Django并不认这个外来文件驱动
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?
'''
# 可以在__init__.py空文件中,添加以下命令
import pymysql
pymysql.install_as_MySQLdb()

# 再一次执行创建,就生成了
python manage.py migrate
或者
python manage.py makemigrations

进一步使用客户端工具连接mysql,就可以看到相关表和数据了。

创建应用

一个Django项目可以包含多个Django应用,执行下面命令将会生成下图相关文件。

python manage.py startapp demo

  • migrations:该文件夹用于在之后定义引用迁移功能。
  • __init__.py:一个空文件,在这里是必须的。用来将整个应用作为一个Python模块加载。
  • admin.py:管理站点模型,用于编写Django自带的后台相关操作,默认为空。
  • apps.py:定义应用信息。
  • models.py:设置数据模型,即定义数据表结构。
  • tests.py:用于编写测试代码的文件。
  • views.py:包含视图模型的相关操作,即定义业务逻辑。

创建模型

创建模型其实就是创建表,Django通过Model操作数据库,自动生成相应数据库类型的SQL语句,所以不需要关注SQL语句和类型,Django自动完成对数据的操作,只要能够设计Model即可。


打开models.py文件、settings.py文件,添加以下相应的代码。

# models.py文件添加下面代码,可以创建数据表格对应的数据模型
from django.db import models # 引用数据库创建模块
class Test(models.Model): # 定义表结构,下面是字段列表
    username = models.CharField(primary_key=True,max_length=20) 
    password = models.CharField(max_length=20) # 定义了password 字段,models.CharField相当于 varchar

# settings.py文件新的app:demo
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'demo'
]

创建表结构

python manage.py migrate
'''
Migrations for 'demo':
  demo/migrations/0001_initial.py
    - Create model Test
'''

让Django知在数据模型中有一些变更。

python manage.py makemigrations demo
'''
Migrations for 'demo':
  demo/migrations/0001_initial.py
    - Create model Test
'''

创建demo数据表结构

python manage.py migrate demo
'''
Operations to perform:
  Apply all migrations: demo
Running migrations:
  Applying demo.0001_initial... OK
'''

返回客户端工具查看,可以发现新生成了demo_test表。

设计路由

路由就是根据不同的URL分发不同的信息。路由处理就是在服务器端接收到HTTP请求之后,能够对请求的路径字符串进行匹配处理,并根据URL调用相应的应用程序。

URL在Django中其实是由用户自己构造的,Django约定URL是在项目同名目录下的url.py文件的urlpatterns列表构造的。

# demo 应用中 view.py 文件,添加下面代码
from django.http import HttpResponse # 导入HTTP响应模块

def hi(request): # 定义视图函数
    return HttpResponse('Hi,my baby') # 设计响应内容,返回响应信息

# 编写路由,url.py 添加下面代码,绑定URL与视图函数
from demo import views # 导入模块视图

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hi/',views.hi) # 添加一个元素,定义路由
]

在浏览器中输入:http://127.0.0.1:8000/hi/ 就能看到响应信息,如下图。

设计视图

每一个URL都对应一个views视图函数名,视图函数名不能相同,否则会报错。Django约定视图函数写在APP应用里的views.py文件中。

# demo 应用中 view.py 文件,添加下面代码
from demo import views # 导入视图模块
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hi/',views.hi),
    url(r"^show_news/(\d+)/(\d+)$",views.show_news)

]

# 编写路由,url.py 添加下面代码,绑定URL与视图函数
from django.http import HttpResponse # 导入HTTP响应模块

def hi(request):
    return HttpResponse('Hi,my baby')

def show_news(request,a,b):
    return HttpResponse("<h1>新闻、界面<p>新闻类别:%s</p><p>当前页面:%s</p>"%(a,b))

在浏览器中输入:http://127.0.0.1:8000/hi/)show_news/2/3 就能看到响应信息,如下图。

设计模版

当用户发送请求的时候,视图返回一个响应,响应可以是一个重定向、一个404错误、一个XML文档、一张图片或者是一个HTML内容的网页。前面几个返回的信息比较有限,重点是HTML内容的网页,把这样的页面按规范写好,然后都放在项目根目录下的templates文件夹里,这样的页面被称为“模版”页面。


Django作为成熟的Web框架,需要一种很便利的方法动态生成HTML网页,因此有了模版这个概念。模版页面包含一些基础的HTML代码和一些特殊的语法,这些特殊的语法主要用于如何将动态数据插入HTML页面中。


静态部分:HTML、CSS、Javascript设计。


动态部分:通过Django动态框架设计。


在demo目录下,创建一个templates目录,并在templates下创建test.html文件,设计一个简单的表单页面,内容如下:

<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='UTF-8'>
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<form action="search" method="GET">
    <input type="text" name="name">
    <input type="submit" value="搜索">
</form>
</body>
</html>

demo 应用中 view.py 文件,添加下面代码,定义两个视图函数。

from django.http import HttpResponse

def hi(request):
    return HttpResponse('Hi,my baby')

def show_news(request,a,b):
    return HttpResponse("<h1>新闻、界面<p>新闻类别:%s</p><p>当前页面:%s</p>"%(a,b))

def f1(request):
    return render(request,"test.html")

def f2(request):
    request.encoding='utf-8'
    if 'name' in request.GET and request.GET["name"]:
        t = "你搜索的内容为:"+ request.GET['name']
    else:
        t = '提交的表单为空'
    return  HttpResponse(t)

编写路由,在url.py 添加下面代码,绑定URL与视图函数。

from demo import views
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hi/',views.hi),
    url(r"^show_news/(\d+)/(\d+)$",views.show_news),
    url(r"^search_form$",views.f1),
    url(r"search$",views.f2)
]

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
117 1
|
9月前
|
开发框架 前端开发 JavaScript
ASP.NET Web Pages - 教程
ASP.NET Web Pages 是一种用于创建动态网页的开发模式,采用HTML、CSS、JavaScript 和服务器脚本。本教程聚焦于Web Pages,介绍如何使用Razor语法结合服务器端代码与前端技术,以及利用WebMatrix工具进行开发。适合初学者入门ASP.NET。
|
5月前
|
数据采集 人工智能 测试技术
Python有哪些好用且实用的Web框架?
Python 是一门功能强大的编程语言,在多个领域中得到广泛应用,包括爬虫、人工智能、游戏开发、自动化测试和 Web 开发。在 Web 开发中,Python 提供了多种框架以提高效率。以下是几个常用的 Python Web 框架:1) Django:开源框架,支持多种数据库引擎,适合新手;2) Flask:轻量级框架,基于简单核心并通过扩展增加功能;3) Web2py:免费开源框架,支持快速开发;4) Tornado:同时作为 Web 服务器和框架,适合高并发场景;5) CherryPy:简单易用的框架,连接 Web 服务器与 Python 代码。这些框架各有特色,可根据需求选择合适的工具。
276 14
|
7月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
202 19
|
7月前
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
177 1
打造高效的Web Scraper:Python与Selenium的完美结合
|
7月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
198 20
|
6月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
10月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
414 67
|
8月前
|
JSON 安全 中间件
Python Web 框架 FastAPI
FastAPI 是一个现代的 Python Web 框架,专为快速构建 API 和在线应用而设计。它凭借速度、简单性和开发人员友好的特性迅速走红。FastAPI 支持自动文档生成、类型提示、数据验证、异步操作和依赖注入等功能,极大提升了开发效率并减少了错误。安装简单,使用 pip 安装 FastAPI 和 uvicorn 即可开始开发。其优点包括高性能、自动数据验证和身份验证支持,但也存在学习曲线和社区资源相对较少的缺点。
391 15
|
10月前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
419 4

推荐镜像

更多