安装

以管理员身份运行cmd

pip3 install django

创建一个项目

django-admin startproject mysite

1
2
3
4
5
6
7
8
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
  • manage.py:【固定】用于启动项目
  • mysite/
    • asgi.py【固定】接受网络请求
    • wsgi.py【固定】接受网络请求
    • urls.py【固定】URL和函数的对应关系
    • settings【固定】项目配置文件

创建app

1
python3.9 manage.py startapp app01
1
2
3
4
5
6
7
8
9
│  admin.py	【固定】django默认提供的后台管理
│ apps.py 【固定】app启动类
│ models.py 【重要】对数据库进行操作
│ tests.py 【固定】单元测试
│ views.py 【重要】函数
│ __init__.py

└─migrations【固定】数据库变更记录
__init__.py
  • 注册app:在mysite/settings.py中注册app
1
2
3
4
5
6
7
8
9
10
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app.apps.AppConfig'//注册app语句
]

  • 配置url,编写视图函数

image-20231014155514531

image-20231014171052726

  • 启动程序

    • python manage.py runserver
  • 启动成功

image-20231014171127100

image-20231014171111727

如果想再加页面,只要再添加一个url,再填写一个视图函数即可

模板

目前我们只能返回一个文本,如果我们想返回一个html文件

views.py内使用render返回页面名称image-20231015083910480

app下创建templates\页面

image-20231015084004595

url.py配置路由

image-20231015084046950

静态文件的加载

在app目录下创建static文件夹,用于存放静态文件image-20231015084404893

如果后续会对statics文件夹名称进行修改,则需配置动态路由。(若修改文件夹名称为static)

配置方法:

  • settings.py内添加:STATIC_URL = '/static/'
  • html模板添加:{% load static %}
  • 引用文件时的写法:eg:<img src="{% static 'img/i.jpg' %}" alt="">

后端对接口的调用:

image-20231015094005079

image-20231015094026263

view.py url.py templates 浏览器映射关系

image-20231015104829250

数据库

虚拟环境中安装mysqlclient

pip install mysqlclient

ORM可以帮助我们
  • 创建、修改、删除数据库中的表【无法创建数据库】
  • 操作表中的数据
创建数据库
  • 启动MySQL,mysql -u root -p
  • show databases;
  • create database <数据库名> DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
  • use <数据库名>
    • show tables发现是空的
连接数据库

settings配置数据库:

1
2
3
4
5
6
7
8
9
10
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'djangolearn',#数据库名
'USER':'root',
'PASSWORD':'12345',
'HOST':'127.0.0.1',#MySQL位置,这里为本机
'PORT':'3306',#服务器端口号
}
}
django操作表
  • 创建表
  • 删除表
  • 修改表

移步models.py

1
2
3
4
5
6
from django.db import models

class UserInfo(models.Model):#要求:继承models.Model类
name = models.ChsrField(maxlength = 32)
password = models.CharFied
age = models.IntegerField()

SQL语句:(未经ORM转换之前)

1
2
3
4
5
6
create table app_userInfo(
id bigint auto_increment primary kry
name varchar(32)
password varchar(64)
age int
)

python manage.py makemigrations

python manage.py migrate

image-20231015173301684

此处把userInfo打错了

查看第一个表

desc app_usertnfo

image-20231015173500916

其他的表的来源:源于django提供的其他默认的app,生成了其他的默认功能的表

image-20231015173623181

  • 添加表,只要在models里面添加类,再执行两条语句即可

  • 删除表,删除类

  • 添加已经存在的表的列:(表里可能有数据)

    • 选择一:终端给这一列添加值

    • 选择二:在类给新列添加默认值:eg:age = models.IntegerField(default=2)

    • 选择三:允许新列为空:eg:age = models.IntegerField(null=True,blank=True)

操作表中的数据
1
UserTnfo.objects.create(name="feather",password = "12345",age=19)
mysql启动失败

Can’t connect to MySQL server on ‘localhost:3306’ (10061)

密码:12345

以管理员身份运行CMD

任务管理器内启动mySQL服务

Django前后端分离

  1. 安装和配置 Django REST framework

    安装了 Django REST framework。

    1
    pip install djangorestframework

    settings.py 文件中添加 'rest_framework'INSTALLED_APPS 配置项中,以启用 DRF。

  2. 创建模型

    创建一个模型来表示你的表。这个模型将定义表的结构和字段。例如:

    1
    2
    3
    4
    5
    6
    from django.db import models

    class YourModel(models.Model):
    field1 = models.CharField(max_length=100)
    field2 = models.IntegerField()
    # 添加其他字段...
  3. 创建序列化器

    创建一个序列化器,将模型数据转换为 JSON 或其他适当的格式。创建 serializers.py,定义一个序列化器类:

    1
    2
    3
    4
    5
    6
    7
    from rest_framework import serializers
    from .models import YourModel

    class YourModelSerializer(serializers.ModelSerializer):
    class Meta:
    model = YourModel
    fields = '__all__'
  4. 创建 API 视图

    views.py 文件中创建一个 API 视图来处理对表数据的请求。可使用 DRF 的通用视图类来简化这个过程:

    1
    2
    3
    4
    5
    6
    7
    pythonfrom rest_framework import generics
    from .models import YourModel
    from .serializers import YourModelSerializer

    class YourModelList(generics.ListAPIView):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer
  5. 设置 URL 路由

    urls.py 中,设置 URL 路由以映射请求到相应的 API 视图:

    1
    2
    3
    4
    5
    6
    pythonfrom django.urls import path
    from . import views

    urlpatterns = [
    path('api/your-model/', views.YourModelList.as_view(), name='your-model-list'),
    ]

    这将允许前端应用访问 API 数据的 URL。

  6. 运行开发服务器

    运行 Django

    1
    python manage.py runserver
  7. 前端项目调用 API

    前端项目可以使用 JavaScript Fetch API、Axios 或其他 HTTP 客户端库来调用 API。在前端项目中使用 API URL 来获取表的内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    const apiUrl = 'http://localhost:8000/api/your-model/';

    fetch(apiUrl)
    .then(response => response.json())
    .then(data => {
    // 处理从 API 获取到的数据
    console.log(data);
    })
    .catch(error => {
    console.error('API 请求错误:', error);
    });

这些步骤将帮助你创建一个 API,使前端能够获取到表的内容,并以 JSON 或其他格式返回数据。