栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django前后端分离之后端接口流程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django前后端分离之后端接口流程

  1. 创建项目

    workon django django-admin startproject 项目名

  2. pycharm打开项目

  3. 设置解释器

  4. 创建子应用(python manage.py startapp 子应用名)

  5. 修改配置文件(第二个项目名下面的settings.py)

        注册子应用

# 注册APP 也就是让Django项目识别 自己的子应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
#     注册user子应用
    'user.apps.UserConfig'
]

        修改数据库配置

DATAbaseS = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(base_DIR, 'db.sqlite3'),
    # }
    'default': {
        # 链接数据库所需的引擎
        'ENGINE': 'django.db.backends.mysql',
        # 数据库所在电脑的ip地址,如果链接的是本机的数据库,地址也就是  127.0.0.1 或者 localhost
        'HOST':'localhost',
        # 数据库所在服务的端口号
        'PORT':3306,
        # 登录mysql用户名
        'USER':'root',
        # mysql的密码
        'PASSWORD':'zf1234',
        # 自己手动mysql中创建库
        'NAME':  'day02',
    }
}

        本地化配置

# 修改中文
LANGUAGE_CODE = 'zh-hans'
# 修改为 亚洲/上海时间
TIME_ZONE = 'Asia/Shanghai'

6、在 子应用的 models.py创建模型类(每个模型类对应数据库中的一张表)

        创建模型类

from django.db import models


# Create your models here.
# 导演: 姓名、年龄、性别
class DY(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField(null=True)
    # 用布尔类型代表 男和女 True:男, False 女
    gender = models.BooleanField(default=True)

    class meta:
        db_table = 'tb_dy'


# 电影: 电影名、价格、销量、上映日期
class Movie(models.Model):
    name = models.CharField(max_length=20)
    price = models.DecimalField(max_digits=7, decimal_places=2)
    salses = models.IntegerField(default=0)
    time = models.DateField()

    class meta:
        db_table = 'tb_movie'

        迁移生成表

  • python manage.py makemigrations

  • python manage.py migrate

7、在子应用的 views.py中定义视图

from django.http.response import HttpResponse
from .models import *
import json


# 展示电影列表
def movie_list(request):
    # 1. 模型类.objects.all()
    movies = Movie.objects.all()
    
    # 2. 将查询集解析为 列表包含字典的数据格式
    data = [
        {
            'id': movie.id,
            'name': movie.name,
            'price': str(movie.price),
            'salses': movie.salses
        }
        for movie in movies
    ]
    # 在实际开发中,django只负责 返回数据,并且是 json 数据
    # 3. 将 列表数据 转换为 json字符串
    s = json.dumps(data)
    # 4. 将json字符串作为响应返回
    return HttpResponse(s)

# 展示导演列表
def dy_list(request):
    # 1. 从数据库中查询全部导演数据
    dy_list = DY.objects.all()

    # 2. 解析数据
    data = [
        {
            'id': dy.id,
            'name': dy.name,
            'gender': '男' if dy.gender else '女'
        }
        for dy in dy_list
    ]

    # 3. 返回数据,数据自动转换为json, 
    # data数据是非字典,转换时,需要设置 safe=False
    # data是字典数据,就不需要设置
    return JsonResponse(data, safe=False)

8、对视图配置路由

from django.contrib import admin
from django.urls import path
from movies.views import *

urlpatterns = [
    path('admin/', admin.site.urls),
    path('movie/', movie_list)  # 对展示电影的视图配置路由
    path('dy/', dy_list)  # 对展示导演的视图配置路由    
]

小结:

  • 项目的初始化只需要执行一次

  • 每个功能对应一个视图函数

  • 每个视图函数对应一个路由

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339436.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号