从零开始创建一个Django后端项目

从零开始创建一个Django后端项目

助教:

后端开发

常用后端框架

SpringBoot
  • Java

  • 性能更好

  • 主流大型项目框架

  • Entity层,controller层,service层,mapper层

  • sql,数据库基本知识要会

Django
  • Python

  • 代码简洁,适合快速开发小型项目

  • 语言学习成本低,框架学习成本低,接口逻辑仅在view.py实现

本教程以更好上手的django框架进行讲解,大家依据自己的基础去选择后端框架

软件和环境

软件:

Pycharm,vscode…

Pycharm下载: https://www.jetbrains.com.cn/pycharm/

申请教育优惠,BUAAer免费使用

不要选择community版本,选择professional版本

从零开始创建一个Django后端项目_第1张图片

环境配置:

相比于直接安装 Python 某个版本,更推荐安装 Anaconda 管理虚拟环境。Python 项目的版本和依赖各有千秋,而使用 Anaconda 能针对项目建立虚拟环境,互不干扰且便于管理。

Anaconda下载地址:

官网: https://www.anaconda.com/

清华镜像:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/(选择最新版本即可)
Windows-x86.exe

从零开始创建一个Django后端项目_第2张图片

⚠️ 安装步骤中注意勾选添加至环境变量中

开始创建项目

创建django环境:

安装 Anaconda 后,使用 conda 指令新建一个虚拟环境,用于开发 Django 项目–打开Anaconda prompt黑窗,分别输入:

conda create --name django python=3.8
conda activate django

看到变为(django)开头则成功:

在这里插入图片描述

创建django项目:

打开pycharm:File->new Project

从零开始创建一个Django后端项目_第3张图片

创建后运行,如果终端如下则创建成功,后端项目运行在http://127.0.0.1:8000/

在这里插入图片描述

创建后运行,会看到djangoProject文件夹和user文件夹,user文件夹就是一个项目app

创建项目app

终端输入:python manage.py startapp app名

(仅作为展示,不需要跟着我创建)

在这里插入图片描述

此时会看到目录里多出test1文件夹

现在就需要在djangoProject/settings.py install_app中写创建的app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',
    'test1',
]

⚠️user是创建项目时就新建的app,user.apps.UserConfig 就是user的配置,不要再写

文件结构

press 
|-- djangoProject # app目录 
| 	|-- __init__.py # python包声明 
|	|-- admin.py 
|	|-- apps.py # app配置文件 
|	|-- models.py # 数据库模型配置 
|	|-- tests.py # 测试模块 
|	`-- views.py # 视图编写文件(API-实现业务逻辑,响应前端的请求) 
|-- user 
|	|-- __init__.py 
|	|-- asgi.py 
|	|-- settings.py # 项目配置文件 
|	|-- urls.py # 后端路由设置 
|	`-- wsgi.py # uwsgi运行入口 
|-- manage.py # django命令行工具 
`-- db.sqlite3 # 数据库文件 

user /models.py:

数据库模型设置,在这里要建立数据库表项及其属性

user /views.py:

编写api的文件,在这里要编写和规划所有的请求处理函数

djangoProject /settings.py:

项目总配置文件,在这里实现跨域设置、app信息等

djangoProject /urls.py:

后端路由设置,在这里指定后端API的路由,以供前端发送请求

路由分发

一个项目通常是包含多个app的,每个app中会实现多个接口,产生多个请求地址, 所有api 的路由都在一个文件中(djangoProject /urls.py)添加是不合适的。 因此,可以在各 app 下新建 urls.py 文件,并在总的路由文件中指定包含这些文件。具体操作请看下面:

首先,在 app(user目录) 下新建 urls.py 文件,内容如下:

# app/urls.py
from django.urls import path
from .views import *

urlpatterns = [
    # path('url_name', api_name)
    # 这是一个样例,指定路由名为url_name,对应处理函数为当前app内views.py中的api_name
]

接着在项目配置目录(djangoProject目录)的 urls.py 引入上面文件的路由:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include(('user.urls', 'user'))),
]

上述操作实现了将 user 这个 app 指定的 urls,全部接到了路由 user/ 之后。

示例 注册接口

假设要开发一个注册功能,用户可以使用用户名和密码进行注册;用户名要求唯一。

数据库模型 user/models.py

models.py文件中存放数据库的结构,包含数据库的字段和字段属性

from django.db import models

# Create your models here.
class user(models.Model):
    username = models.CharField(max_length=100)
    password = models.CharField(max_length=20)

⚠️注意,在每次修改数据库模型之后, ❗️ 都要生成迁移文件,并应用新的数据库模型。

在终端依次输入如下命令:

python manage.py makemigrations # 生成迁移文件
python manage.py migrate        # 迁移数据库模型

输入上述命令迁移后运行,可以发现在项目根目录出现了 db.sqlite3 文件。这是一个数据库文件。

选看:

Django 的 Model 数据类型

数据类型 说明
AutoField 根据 ID 自增长的 IntegerField 字段,通常用于主键ID
IntegerField 32位整数,可自定义选项
BooleanField 布尔值(True/False)字段
CharField 字符串字段,对小字符串和大字符串都适用;对于大量文本建议使用TextField。必须参数:max_length(字段的最大字符数)
DateField 利用 Python 的 datetime.date 实例来表示日期
DateTimeField 利用 datetime.datetime 实例表示日期和时间
EmailField 带有 email 合法性检测的CharField,默认max_length=75
TextField 超大文本字段
FileField 文件字段
ImageField 继承于FileField,确保是有效图片

字段参数

参数 说明
null 是否允许为空值,默认为false
default 该属性的默认值
primary_key 该属性是否为主键,默认为false
unique 该属性的值是否唯一,默认为false
数据库可视化

众所周知,Jetbrain拥有世界一流的产品(

pycharm内置数据库可视化

可以将目录db.sqlite3 进行可视化,也就是你写在models.py里的内容

首先点右侧栏Database-> 点击Database窗口左上角➕ -> 点击Data Source -> 选择SQLite
从零开始创建一个Django后端项目_第4张图片

File选择项目目录下db.sqlite3 文件,左下角若显示需要安装驱动,点击安装即可

最后点击Test Connection,出现✔️即代表准备就绪,点击APPLY,然后OK退出

从零开始创建一个Django后端项目_第5张图片

此时再点击Database,在目录中就可以看到一对表,找到在models.py中定义的表名,点开即可看到
从零开始创建一个Django后端项目_第6张图片

业务功能user/view.py

完成一个业务功能的实现,一般分为两步:编写业务逻辑处理函数,指定路由。

先实现业务逻辑,在 user/views.py 中编写函数

@csrf_exempt  # 跨域设置
def register(request):  # 继承请求类
    if request.method == 'POST':  # 判断请求方式是否为 POST (此处暂时要求一定是POST)
        username = request.POST.get('username')  # 获取请求体中的请求数据
        password = request.POST.get('password')
        tmp_user = user.objects.filter(username=username)  # 数据库查询相同username的user
        if len(tmp_user) != 0:  # 若存在相同用户名,则返回错误码errno和描述信息msg
            return JsonResponse({'errno': 1002, 'msg': '用户名重复'})
        else:
            # 新建 Author 对象,赋值用户名和密码并保存
            new_user = user(username=username, password=password)
            new_user.save() #save()方法数据存入数据库
            #返回使用Json格式返回体
            return JsonResponse({'errno': 0, 'msg': '注册成功'})
    else:
        return JsonResponse({'errno': 1001, 'msg': '请求方式错误'})
HTTP请求

网页的四种请求方式:

请求方式 特征
GET 从服务器取出资源(一项或多项)
POST 在服务器新建一个资源
PUT 在服务器更新资源(客户端提供改变后的完整资源)
PATCH 在服务器更新资源(客户端提供改变的属性)
DELETE 从服务器删除资源

POST请求,数据存放在请求体中

请求体,是json格式的数据结构,实际上就是字典,非常常见于web前后端请求

{
    "errno": 1002,
    "msg": "用户名重复"
}
{
	"username": "fish",
    "password": "12345"
}
django数据库增删改查操作

# 方法一
user = User()
user.name = "fish"
user.save()
# 方法二
user = User(id=1, name="fish")
user.save()
# 方法三
User.objects.create(id=1, name="fish")

# 查询特定结果
user = User.objects.get(id=1)
# 查看多个结果(返回一个列表)
users = User.objects.filter(kind='学生')
# 查询全部结果
users = User.objects.all()

# 方法一:查后改后保存
user = User.objects.get(id=1)
user.name = "fish"
user.save()
# 方法二:更新
users = User.objects.filter(kind="学生")
users.update(kind="老师")

user = User.objects.get(id=1)
user.delete()
指定路由

在之前创建的user/urls.py中添加:

from django.urls import path
from .views import *

urlpatterns = [
    path('register', register),  # 指定register函数的路由为register
]

测试

前后端分离开发中,仅后端一般无法通过点击图形化界面进行测试,后端的测试也不应该依赖于前端,而应该独立进行。因此后端的测试,需要借助工具模拟前端请求,向后端相应的路由发送请求,并查看响应数据。

Postman是一个非常好用的一个工具,用于向后端发送路由请求

Postman 下载地址: https://www.postman.com/

从零开始创建一个Django后端项目_第7张图片

可以看到正常的Json数据返回,证明注册api实现成功

示例:

从零开始创建一个Django后端项目_第8张图片

可以看到返回

{
    "errno": 0,
    "msg": "注册成功"
}

返回项目数据库,可以看到增加了fish3,12345_3一行数据
从零开始创建一个Django后端项目_第9张图片

postman测试只能知道某个api是否有报错,当报错之后,不知道api中哪里出错了,可以debug运行,或者print大法,依据实际情况检查程序bug,相信大家在程序设计和数据结构课中已经掌握了纯熟的debug技巧(笑

到这里相信大家已经基本入门了django后端框架,祝大家开发愉快

你可能感兴趣的:(python,django,后端)