Linux自动化运维——Python(14)(Django框架介绍及Django框架的后台管理)

一.Django框架介绍

1.什么是框架

软件框架就是为实现或完成某种软件开发时,提供了一些基础的软件产品;框架的功能类似于基础设施,提供并实现最为基础的软件架构和体系;通常情况下我们依据框架来实现更为复杂的业务程序开发;二个字,框架就是程序的骨架。

2.Python 中常见的框架有哪些?

大包大揽Django 被官方称之为完美主义者的Web框架。力求精简 web.py 和Tornado。新生代微框架 Flask 和Bottle

3.Django 框架介绍

Django 是一个高级的Python Web框架,它鼓励快速开发和清洁,务实的设计。由经验丰富的开发人员构建,它负责解决Web开发的许多困难,因此您可以专注于编写应用程序,而无需重新创建轮子。免费的和开源的。被官方称之为完美主义者的Web框架。

4.Django 框架的特点

速度快,安全,可拓展性能好。

5.Django框架的安装及建立过程

    在豆瓣上下载Django框架,在pycharm的终端输入下面代码

pip3 install django==3.0 -i https://pypi.douban.com/simple

创建Django项目

二.Django快速人门:后台管理

       通过简单示例,使用Django 完成基本流程的开发,学习Django 的主要的知识点,, 本次入门以图书管理系统为示例 , 实现图书管理的基本功能。

   第一步:项目的创建与运行

(1)第一次使用Django ,那么你必须要照顾一些初始设置。也就是说,您需要自动生成一些建立Django项目的代码。在pycharm的终端输入下面代码

django-admin startproject BookManage

创建项目后生成了如下的文件

manage.py :一个命令行工具,可以使你用多种方式对Django 项目进行交互
内层的目录:项目的真正的Python包
__init__.py :一个空文件,它告诉Python这个目录应该被看做一个Python包
settings.py :项目的配置
urls.py :项目的URL声明
wsgi.py :项目与WSGI 兼容的Web服务器入口

(2)应用的创建和使用

1)Django 自带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。在一个项目中可以创建一到多个应用,每个应用进行一种业务处理,创建应用的命令:

python3 manage.py startapp bookApp

2)编写第一个视图函数

3)路由规则

要在bookApp 目录中创建一个URLconf ,创建一个名为urls.py

from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
    path('',views.index, name='index'),
]

根据配置文件BookManage/settings 可知路由查找的主文件是BookManage/urls.py , 因此在该文件添加一条url 规则:

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

urlpatterns = [
    path(r'admin/', admin.site.urls),
    path(r'book/', include('bookApp.urls'))
]

4)效果

在终端启动服务器

python3 manage.py runserver

(3)项目的数据库模型

1)Django 支持的数据库包括: sqlite 、mysql 等主流数据库   Django 默认使用**SQLite** 数据库

 sqlite的操作使用  :在命令行做一个数据库的迁移

[root@linux Django2]# python3 manage.py migrate

然后将sqlite3 添加到Django中

添加完成后 

单击db.sqlite3 可以查看数据库信息 默认的Django已经将数据库的一些设置好了

通过网页的方式显示数据库  在命令行输入 python3 manage.py  createsuperuser   创建用户

然后通过 python3 manage.py runserver  启动服务器

可以在上面的界面中添加用户。

2)连接MySQL 数据库配置

在BookManage/settings.py 文件中,通过DATABASES项进行数据库设置:注释之前的sqlite数据库;

# 注释之前的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',
}
}

3) python3  manage.py migrate  数据库迁移   还会有有提示 要安装mysqlclient
4). python3 manage.py createsuperuser
5). python3 manage.py runserve

然后网页登录即可

(3 )创建数据库模型

from django.db import models


# Create your models here.
# 一个Book类对应一个数据库表
# 一个类属性对应一个数据库表的列属性
class Book(models.Model):
    # # 默认情况下,会自动添加id这一列作为主键。
    # title是字符串类型的, 并且最大的长度为20;
    title = models.CharField(max_length=20)
    pub_date = models.DateField()

    def __repr__(self):
        return '<Book: %s>' % (self.title)

    # 自定义对应的表名,默认表名:bookApp_book
    class Meta:
        db_table = "books"


class Hero(models.Model):
    # 默认情况下,会自动添加id这一列作为主键。
    name = models.CharField(max_length=20)
    gender = models.BooleanField(default=True)
    content = models.CharField(max_length=200)
    # 一对多关系, 外键写在多的一端(Book:Hero=1:n)
    # models.CASCADE叫级联删除,当书籍被删除后,关联的任务也会被删除
    book = models.ForeignKey('Book', on_delete=models.CASCADE)

    def __repr__(self):
        return "<Hero %s>" % (self.name)
    # 自定义对应的表名,默认表名:bookApp_book
    class Meta:
        db_table = "heros"

 (4). 生成数据库表

# BookManage/settings.py
# Application definition
INSTALLED_APPS = [
# .......此处省略
'django.contrib.staticfiles',
# 新添加的app
'bookApp',
]

生成迁移文件:根据模型类生成sql 语句       python manage.py makemigrations

执行迁移:执行sql 语句生成数据表   python manage.py migrate

数据库中查看数据库表是否创建成功?   show database   

(5)数据库模型基本操作

现在进入交互式的Python shell,并使用Django 提供的免费API

python manage.py shell
引入需要的包:
from bookApp.models import Hero, Book
查询所有图书信息:
Book.objects.all()
新建图书信息:
from datetime import datetime
book = Book(title="射雕英雄传", pub_date=datetime(year=1990,month=1,day=10))
book.save()
查找图书信息:
book = Book.objects.get(pk=1)
book.id
book.title
book.pub_date
修改图书信息:
book.title = "天龙八部"
book.save()
删除图书信息:
book.delete()

猜你喜欢

转载自blog.csdn.net/weixin_43215948/article/details/107505281