Django 第四章 模版系统详解(ORM数据模型-使用mysql数据库增删改查)
创始人
2024-03-02 22:43:26
0

djiango模版系统:
用于自动渲染一个文本文件,一般用于HTML页面,模版引擎渲染的最终HTML内容返回给客户端浏览器
模版系统分成两部分

静态部分: 例如html css .js
动态部分 djiango 模版语言,类似于jinja语法

变量定义:在函数视图render中的context传入,类似于字典对象。
变量在模版中引用,格式:{{ key }}

静态网站模式

在这里插入图片描述

动态网站模式

在这里插入图片描述

djiango模式

在这里插入图片描述
在这里插入图片描述

认识ORM

对象关系映射:是一种程序设计技术,用于实现面向对象编程语言里不通类型系统的数据之间转发,简单说就是在编程语言中实现的一种虚拟对象数据库。我们对虚拟对象数据库进程操作,它会转化成具体的sql去早错数据库,这样以来我们就不需要去学习复杂的sql语句了
ORM优点:不必熟悉复杂的sql语句,容易上手,避免新手写sql效率问题
在这里插入图片描述

1.0 修改settings.py配置文件,增加myapp模块

在这里插入图片描述

1.1 编写models.py配置文件

from django.db import modelsclass User(models.Model):user = models.CharField(max_length=30)mane = models.CharField(max_length=30)sex = models.CharField(max_length=10)age = models.IntegerField()label = models.CharField(max_length=100)

1.2 生成迁移配置文件(编译)

python3  manage.py makemigrations

执行完会生成如图所示文件在这里插入图片描述
在这里插入图片描述

1.3 同步db.sqlite3数据库

python3  manage.py migrate

在这里插入图片描述
第一次同步会初始化所有的模块,至此,已经完成数据库表的创建

配置使用mysql

1.0 docker创建 mysql实例

docker run -d --name db --network=host   \
-p 3306:3306 -v mysqldata:/var/lib/mysql  \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7 --character-set-server=utf8

2.0 安装pymysql工具

pip install pymysql

在这里插入图片描述

3.0 修改djiango默认数据库连接方式

修改 settins.py配置文件
官方配置文件

 https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'test','USER': 'root','PASSWORD': '123456','HOST': '172.16.226.7','PORT': '3306',}
}

4.0 配置app模块下__init__.py模块

import pymysql
pymysql.install_as_MySQLdb()

在这里插入图片描述

5.0 初始化数据库

python3  manage.py makemigrations  #生成迁移文件
python3  manage.py migrate   #同步数据库

在这里插入图片描述
同步完成,会自动在mysql中创建一个myapp_user的表

6.0 使用ORM增删改查

6.1 编写urls.py视图文件
from django.urls import path, include
from myapp import views
urlpatterns = [path('user_add',views.user_add)
]
6.2 编写路由文件
from django.shortcuts import render,HttpResponse
from myapp.models import User
def user_add(request):if  request.method == "GET":return  render(request,'user_add.html')elif request.method == "POST":# 获取前端提交的数据user = request.POST.get("user")name = request.POST.get("name")sex = request.POST.get("sex")age = request.POST.get("age")label = request.POST.get("label")# 向数据库提交数据User.objects.create(user=user,name=name,sex=sex,age=age,label=label,)return render(request,'user_add.html')
6.3 编写html模版文件


用户添加


注册用户


用户名:
姓名:
性别:
年龄:
标签:

在这里插入图片描述
如图所示

http://127.0.0.1:8000/myapp/user_add
6.4 提交数据测试

在这里插入图片描述
在这里插入图片描述
登陆数据库发现已经插入刚才提交数据!验证成功
需要注意的是需要关闭CSRF安全功能
在这里插入图片描述

6.6 添加数据成功返回提示

增加对数据判断条件

 from django.shortcuts import render,HttpResponse
from myapp.models import User
# from myapp.models import User
# Create your views here.
def user_add(request):if  request.method == "GET":return  render(request,'user_add.html')elif request.method == "POST":# 获取前端提交的数据user = request.POST.get("user")name = request.POST.get("name")sex = request.POST.get("sex")age = request.POST.get("age")label = request.POST.get("label")try:# 向数据库提交数据User.objects.create(user=user,name=name,sex=sex,age=age,label=label,)msg = "用户添加成功"code = 0  #自定义状态码except:msg = "用户添加失败"code = 1 #自定义状态码return render(request,'user_add.html',{'msg':msg, 'code':code})

在这里插入图片描述
修改html模版,增加判断条件
在这里插入图片描述

查看数据库所有用户

1.0 新增路由
在这里插入图片描述
2.0 新增视图

def  user_list(request):user_list = User.objects.all()  #获取所有数据return render(request,"user_list.html",{'user_list': user_list})

3.0 新增模版并打印数据user_list.htm



所有用户列表


{{ user_list }}{% for i  in user_list %}{% endfor %}
用户名姓名性别年龄标签
{{ i.user }}{{ i.name }}{{ i.sex }}{{ i.age }}{{ i.label }}
http://127.0.0.1:8000/myapp/user_list

在这里插入图片描述
根据条件查询
在这里插入图片描述

改数据/删数据

在这里插入图片描述

内置管理后台

在这里插入图片描述

配置使用djiango内置后台
http://127.0.0.1:8000/admin/login/?next=/admin/ahth

在这里插入图片描述

python3 manage.py createsuperuser

在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
汇川伺服电机位置控制模式参数配... 1. 基本控制参数设置 1)设置位置控制模式   2)绝对值位置线性模...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
表格中数据未显示 当表格中的数据未显示时,可能是由于以下几个原因导致的:HTML代码问题:检查表格的HTML代码是否正...
本地主机上的图像未显示 问题描述:在本地主机上显示图像时,图像未能正常显示。解决方法:以下是一些可能的解决方法,具体取决于问...
表格列调整大小出现问题 问题描述:表格列调整大小出现问题,无法正常调整列宽。解决方法:检查表格的布局方式是否正确。确保表格使...
不一致的条件格式 要解决不一致的条件格式问题,可以按照以下步骤进行:确定条件格式的规则:首先,需要明确条件格式的规则是...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...