Python Django后端学习笔记

Last updated on 21 hours ago

创建项目

终端输入

1
django-admin startproject project

目录结构

1
2
3
4
5
6
7
8
9
10
project
manage.py 项目工具(启动、创建app需要用)
├─project
│ │ settings.py 配置文件,如数据库连接,跨域等(重要)
│ │ urls.py 路由,将接口导向视图函数 (重要)
│ │ views.py 用于编写视图函数处理请求(重要)
│ │ __init__.py 告诉解释器,所在目录是一个包
│ │
│ ├─templates 模板用于生成静态网页
│ │ ron.html

启动项目

runserver运行,可选 ip 和端口号,默认http://127.0.0.1:8000/

1
python ./manage.py runserver <ip:port>

启动后浏览器输入对应地址进入 django 默认页面

创建应用

项目可以由多个 app 应用组成,在创建项目时会自动生成一个和项目同名的应用
创建应用可以通过 manage 工具创建

1
python manage.py startapp myapp

会创建一个名为myapp的目录

1
2
3
4
5
6
├─mysql
│ │ admin.py
│ │ apps.py
│ │ models.py 模型,用于连接数据库
│ │ views.py 视图
│ │ __init__.py

Hello World 接口

新建 hello 应用

1
python manage.py startapp hello

出现hello目录

编写视图函数

编写hello/views.py

1
2
3
4
5
6
7
from django.shortcuts import render
from django.http import HttpResponse # 用于返回Http响应
# Create your views here.


def hello(req):
return HttpResponse('Hello World!')

设置路由

在主应用(与项目同名)中project/url.py编写路由

1
2
3
4
5
6
7
8
from django.contrib import admin
from django.urls import path
from hello import views as hello_views # 引入hello应用的视图

urlpatterns = [
path('admin/', admin.site.urls),
path('hello/', hello_views.hello), # 添加hello接口的路由
]

启动项目

1
python ./manage.py runserver

在浏览器输入http://127.0.0.1:8000可以看见默认页面,页面上有我们的所有路由
浏览器输入http://127.0.0.1:8000/hello或者使用其他工具向该地址发送 GET 请求,可以看到Hello World

连接数据库

修改 settings 配置

project/settings文件中,有DATABASES字段,可以这里配置数据库名、用户、密码等信息

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库类型
'NAME': "mysql", # 连接名
'USER': "root", # 数据库用户名
'PASSWORD': "12345", # 数据库密码
'HOST': "localhost", # 主机ip
'PORT': "3306", # 端口号
}
}

编写模型类

hello/models.py文件中编写模型,在其中写的每一个类,都会对应数据库中的表,成员变量则是表的字段

1
2
3
4
5
6
7
8
9
10
11
12
from django.db import models


# Create your models here.


class Person(models.Model):
name = models.CharField(max_length=100) # 字段名为name,类型为char,长度限制100
age = models.IntegerField() # 字段名为age,类型为int

def __str__(self):
return self.name

创建好之后数据库还不会出现对应的表,还需要进行迁移

数据库迁移

需要先安装 mysqlclients

迁移需要先生成迁移文件

1
python ./manage.py makemigrations <app_name>

不写应用名则全部
有了迁移文件,就可以进行数据库迁移

1
python ./manage.py migrate <app_name>

查看数据库,多出表名带有django的表和hello_person即成功

数据库的增删改查

django 中可以通过 ORM 对数据库进行操作,使开发者不需要关系数据库的类型及语法,只需要操作 model 即可

  • 查:
    1
    2
    3
    4
    obj1 = models.Person.objects.get(name="lihua")  # 返回一个对象,如果筛选结果不唯一则报错(0也会报错)
    obj2 = models.Person.objects.filter(name="lihua") # 返回一个对象,含有符合条件的所有数据(无论多少都不报错)
    obj3 = obj2.first() # 集合的第一个
    obj4 = models.Person.objects.all() # 返回全部
  • 增:
    1
    models.Person.objects.create(name="xiaoming",age=10)  # 增加数据
  • 删:
    1
    models.Person.objects.all().delete()  # 删除,可以批量删除,删库必备
  • 改:
    改可以通过update(批量修改)和赋值单数据修改
    1
    2
    3
    obj1 = models.Person.objects.get(name="lihua")  # 获取单条数据
    obj1.age = 20 # 修改数据
    obj1.save() # 保存数据
    update可以批量修改,但是只能用于数据集,不能用于单条数据(但是可以用于只有一条数据的数据集)
    1
    2
    obj1 = models.Person.objects.filter(age=10)
    obj1.update(age=11) # 批量修改,会自动保存,不需要save