Python框架Django入门教程

Django是一个使用 Python 编程语言开发的、免费且开源的 Web 应用框架。它遵循 "DRY(Don't Repeat Yourself)" 原则,旨在简化创建功能丰富的、高效率的 Web 网站。Django 提供了模型-视图-控制器(MVC)架构的实现,以及ORM(对象关系映射)系统、内置了 admin 界面、URL 路由、模板引擎、表单处理和强大的安全特性。

开发环境:Python3 + PyCharm专业版

一、创建项目

打开PyCharm,新建Django项目(PyCharm社区版无法快速创建Django项目),设置新项目的路径和项目名,直接点击创建即可

在PyCharm的终端中可以使用pip命令来查看默认安装的依赖:

默认安装的是最新版本的Django,可根据实际需求,安装指定版本的Django:

bash 复制代码
pip uninstall django
pip install django==3.2.18

二、项目文件主要文件介绍

修改setting.py文件,配置数据库

python 复制代码
# 数据库配置 默认的数据库为sqlite
DATABASES = {
    'default': {
        'ENGINE': 'djangoDemo.db.backends.mysql',  # 数据库类型
        'NAME': 'db_name',  # 数据库名
        'USER': 'username',  # 用户名
        'PASSWORD': 'password',  # 密码
        'HOST': '127.0.0.1',  # 数据库服务器地址
        'PORT': 3306,  # 端口号(MySQL默认3306)
    }
}

打开终端,执行命令,安装mysql依赖:

bash 复制代码
pip install mysqlclient

三、启动项目

PyCharm运行manage.py启动项目,默认启动端口为8000,直接点击蓝色的 http://127.0.0.1:8000/ 即可跳转到浏览器访问Django的主页

控制台日志:

浏览器主页:

四、新建应用模块

在PyCharm的终端中执行命令,创建新的应用模块:

bash 复制代码
python manage.py startapp app名

生成的应用模块目录 :

修改setting.py文件,找到INSTALLED_APPS(约33行处),将新建的应用模块注册到Django中

python 复制代码
# 用来注册App 前6个是django自带的应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',  # 注册新的app
]

五、写一个Hello World接口

修改urls.py路由配置文件,添加新的路由:

在新建的应用模块中的views.py中添加hell接口:

浏览器访问 http://127.0.0.1:8000/

六、写一个用户表的增删改查接口

创建user表:

sql 复制代码
CREATE TABLE `user`  (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '名字',
  `account` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '账号',
  `password` varchar(20) CHARACTER SET utf8mb4  NOT NULL COMMENT '密码',
  `age` int NULL DEFAULT NULL COMMENT '年龄',
  `gender` char(1) CHARACTER SET utf8mb4  NULL DEFAULT NULL COMMENT '性别',
  `money` decimal(10, 2) NOT NULL COMMENT '余额,人民币单位:元',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `isdel` int NOT NULL DEFAULT 0 COMMENT '该用户是否已删除,0未删除,1已删除',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8mb4 ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, '小白', 'aaa@qq.com', '123456', 15, '男', 100.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (2, '小明', 'bbb@qq.com', '123456', 16, '男', 58.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (3, '大白', 'ccc@qq.com', '123456', 22, '女', 168.00, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (4, '大明', 'ddd@qq.com', '123456', 21, '男', 12.50, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 0);
INSERT INTO `user` VALUES (5, '小刚', 'eee@qq.com', '123456', 17, '男', 65.23, '2023-01-15 00:35:44', '2023-01-15 00:35:44', 1);

在models.py中创建user表的映射类:

python 复制代码
from django.db import models

# 模型层,实体类层
class User(models.Model):
    # 设置所需要映射的数据表,默认映射的表名是:应用名_全小写类名
    class Meta:
        db_table = "user"

    ISDEL_CHOICES = (
        (0, "未删除"),
        (1, "已删除")
    )

    # Django自带id字段,无需手动添加
    # id = models.IntegerField()
    # 将变量与数据库表字段进行映射,CharField限制该字段为字符串类型,限制该字段的长度、默认值
    name = models.CharField(max_length=20, default="")
    account = models.CharField(max_length=20, default="")
    password = models.CharField(max_length=16, default="", null=False)
    age = models.IntegerField()
    gender = models.CharField(max_length=1)
    money = models.DecimalField(max_digits=10, decimal_places=2)
    create_time = models.DateTimeField()
    update_time = models.DateTimeField()
    # choices限制字段的取值范围,只能是0和1
    isdel = models.IntegerField(null=False, choices=ISDEL_CHOICES)

未完待续 .......

相关推荐
500了1 小时前
Kotlin基本知识
android·开发语言·kotlin
不知所云,3 小时前
qt cmake自定义资源目录,手动加载资源(图片, qss文件)
开发语言·qt
安冬的码畜日常3 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
阑梦清川3 小时前
Java继承、final/protected说明、super/this辨析
java·开发语言
PythonFun4 小时前
Python批量下载PPT模块并实现自动解压
开发语言·python·powerpoint
Death2004 小时前
Qt 6 相比 Qt 5 的主要提升与更新
开发语言·c++·qt·交互·数据可视化
机器视觉知识推荐、就业指导4 小时前
使用Qt实现实时数据动态绘制的折线图示例
开发语言·qt
炼丹师小米4 小时前
Ubuntu24.04.1系统下VideoMamba环境配置
python·环境配置·videomamba
GFCGUO4 小时前
ubuntu18.04运行OpenPCDet出现的问题
linux·python·学习·ubuntu·conda·pip
快乐就好ya5 小时前
Java多线程
java·开发语言