本文整理自网络,侵删。
Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。
Django 遵守 BSD 版权,初次发布于 2005 年 7 月, 并于 2008 年 9 月发布了第一个正式版本 1.0 。
Django 采用了 MVT 的软件设计模式,即模型(Model),视图(View)和模板(Template)。
参考官方文档:Django官方文档https://docs.djangoproject.com/zh-hans/3.2/
下面看下python Django框架快速入门,步骤如下所示:
第一步:项目的创建与运行
第一次使用 Django ,那么你必须要照顾一些初始设置。也就是说,您需要自动生成一些建立 Django
项目的代码。
从命令行 cd 到您要存储代码的目录,然后运行以下命令:
django-admin startproject BookManage
进入项目目录,目录结构如下图:
目录说明:
manage.py :一个命令行工具,可以使你用多种方式对 Django 项目进行交互
内层的目录:项目的真正的Python包
__init__.py :一个空文件,它告诉Python这个目录应该被看做一个Python包
settings.py :项目的配置
urls.py :项目的URL声明
wsgi.py :项目与 WSGI 兼容的Web服务器入口
第二步:应用的创建和使用
(1) 创建第一个应用程序
Django 自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不
是创建目录。
在一个项目中可以创建一到多个应用,每个应用进行一种业务处理
创建应用的命令:
python3 manage.py startapp bookApp
应用的目录结构如下图 :
(2) 编写第一个视图函数
打开文件 bookApp/views.py 并放入以下Python代码:
from django.shortcuts import render # Create your views here. from django.http import HttpResponse def index(request): return HttpResponse("图书管理系统")
(3) 路由规则
在 bookApp 目录中创建一个 URLconf ,创建一个名为 urls.py 。
# bookApp/urls.py from django.conf.urls import url from . import views urlpatterns = [ # 当用户访问bookApp应用的主页时, 执行视图函数index,反向根据名称获取url地址; url(r'^$', views.index, name='index'), ]
根据配置文件 BookManage/settings 可知路由查找的主文件是 BookManage/urls.py , 因此在该文件
添加一条 url 规则:
# BookManage/urls.py from django.conf.urls import url from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), # 当用户访问的url地址以book开头, 请访问bookApp.urls这个url配置文件进行匹配并执行对应 的视图函数. url(r'^book/', include('bookApp.urls')), ]
include()函数允许引用其他 URLconfs 。
(4) 效果展示
启动服务器
python3 manage.py runserver
访问 url 地址: http:// 127.0.0.1:8000/book/ 如果看到主页内容 图书管理系统 即成功
第三步: 项目的数据库模型
(1). 数据库创建
MariaDB [(none)]> create database BookManage charset=utf8;
(2). 连接 MySQL 数据库配置
在 settings.py 文件中,通过DATABASES项进行数据库设置
Django 支持的数据库包括: sqlite 、 mysql 等主流数据库
Django 默认使用 **SQLite** 数据库
Django数据库设置参考文档
其中ENGINE设置为数据库后端使用。内置数据库后端有:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
在 BookManage/settings.py 文件中,通过DATABASES项进行数据库设置:
# ....... # 注释之前的sqlite数据库; # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } # 添加新的Mysql数据库连接; DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'BookManage', 'USER': 'root', 'PASSWORD': 'westos', 'HOST': 'localhost', 'PORT': '3306', } } # ....... 注意: Django 使用 MySQL 数据库需要安装 PyMySQL ,若已经安装请略过。 pip install pymysql
打开 BookManage/__init__.py ,写入以下代码导入 pymysql :
import pymysql # MySQLdb只支持Python2.*,还不支持3.可以用PyMySQL代替。 pymysql.install_as_MySQLdb()
(2). 创建数据库模型
本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄
图书表结构设计: 表名: Book
图书名称: title
图书发布时间: pub_date
英雄表结构设计: 表名: Hero
英雄姓名: name
英雄性别: gender
英雄简介: hcontent
所属图书: hbook
图书-英雄的关系为一对多
# bookApp/models.py from django.db import models # Create your models here.class Book(models.Model): # 定义属性:默认主键自增id字段可不写 title = models.CharField(max_length=20) pub_date = models.DateTimeField() # 定义默认输出格式 def __str__(self): return "%d" % self.title # 自定义对应的表名,默认表名:bookApp_book class Meta: db_table = "books" class Hero(models.Model): name = models.CharField(max_length=20) gender = models.BooleanField() content = models.CharField(max_length=100) Book = models.ForeignKey('Book', on_delete=False) def __str__(self): return "%s" % self.name # 自定义对应的表名,默认表名:bookApp_hero class Meta: db_table = "heros"
(3). 生成数据库表
激活模型:编辑 settings.py 文件,将应用加入到 INSTALLED_APPS 中
# BookManage/settings.py # Application definition INSTALLED_APPS = [ # .......此处省略 'django.contrib.staticfiles', # 新添加的app 'bookApp', ]
生成迁移文件:根据模型类生成 sql 语句
python manage.py makemigrations
产生的迁移文件如下:
执行迁移:执行 sql 语句生成数据表
python manage.py migrate
数据库中查看数据库表是否创建成功?
$ mysql -uroot -pwestos MariaDB [(none)]> use BookManage MariaDB [BookManage]> show tables; MariaDB [BookManage]> desc books; +----------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+----------------+ | id | int(11) | title | varchar(20) | NO | pub_date | datetime | NO | NO | PRI | NULL | auto_increment | | | NULL | | | | NULL | | +----------+-------------+------+-----+---------+----------------+ MariaDB [BookManage]> desc heros; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(20) | NO | | NULL | | | gender | tinyint(1) | NO | | NULL | | | content | varchar(100) | NO | | NULL | | | Book_id | int(11) | MUL | NULL | | | NO +---------+--------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec)
(4). 数据库模型基本操作
相关阅读 >>
更多相关阅读请进入《Sqlite》频道 >>

数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。