Djiango 模版系统详解(ORM数据模型-使用mysql数据库增删改查)

news2024/11/24 6:43:12

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 models

class 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模版文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户添加</title>
</head>
<body>
<form action="" method="post">


      <h2>注册用户</h2><br>
        用户名:<input type="text" name="user"><br>
        姓名:<input type="text" name="name"><br>
        性别:<input type="text" name="sex"><br>
        年龄:<input type="text" name="age"><br>
        标签:<input type="text" name="label"><br>
    <button type="submit">提交</button>
</form>
</body>
</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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>所有用户列表</title>
</head>
<body>
{{ user_list }}

<table border="1">
    <thead>
        <tr>
            <th>用户名</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>标签</th>
        </tr>
    </thead>
    <tbody>
        {% for i  in user_list %}
            <tr>
                <td>{{ i.user }}</td>
                <td>{{ i.name }}</td>
                <td>{{ i.sex }}</td>
                <td>{{ i.age }}</td>
                <td>{{ i.label }}</td>
            </tr>
        {% endfor %}
    </tbody>
</table>

</body>
</html>
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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS QGIS学习二:图层如何只显示需要的部分几何面数据(附最新坐标边界下载全国省市区县乡镇)

文章目录前言准备SHP数据ArcMap 的筛选QGIS 的筛选如何编写查询条件前言 当我们用GIS软件打开一个SHP文件的时候&#xff0c;会显示出里面全部的几何图形&#xff0c;假如我只想要其中的一部分数据显示出来&#xff0c;其他的均不要显示&#xff0c;有那么几种操作方法。 我们…

UE4使用蓝图实现角色冲刺

又学了几天&#xff0c;前面记录了如何使用蓝图实现开关门&#xff0c;这次来实现一下角色的冲刺、瞬移的操作 一般玩游戏的时候&#xff0c;可能都会有按左shift键让角色从行走变成奔跑的状态&#xff0c;又或者双击回避键角色瞬移躲避等操作 那就先实现一下加速奔跑吧&…

Python毕业设计必备案例:【学生信息管理系统】

嗨害大家好鸭&#xff01;我是小熊猫~ 最近看大家好像都快放假啦~ 但是放假之前有的小朋友要做毕业设计~ 有的要期末考试~ 那么今天来给大家整一个小的毕业管理系统案例 康康整题思路是怎么样的~ 源码、资料电子书点击这里获取 功能模块 基本信息管理和学生成绩管理。 基…

【自用】VUE 获取登录用户名 显示在其他页面上

大步骤一、准备工作 步骤1&#xff1a; 安装 js-cookie 依赖 npm install js-cookie --save步骤2&#xff1a; 在登录页面中引入 js-cookie 依赖 <script> import jsCookie from js-cookie; </script>大步骤二、在 登录页面 的vue文件 中使用它&#xff01; …

[附源码]计算机毕业设计springboot基于JAVA技术的旅游信息交互系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]Python计算机毕业设计SSM泸定中学宿舍管理系统设计(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

python零基础入门(完整版)

1python软件下载 我们需要下载python语言翻译器&#xff08;也就是运行环境&#xff09;&#xff0c;和一个用来写python的软件&#xff0c;用它写python语言比较方便 首先打开百度&#xff0c;下载org 然后点击下载 然后选择一个稳定版本下载 然后会跳转到一个页面&#xff0c…

kubernetes-service详解

kubernetes-service详解 文章目录kubernetes-service详解一、Service操作一&#xff1a;创建集群内部可访问的Service操作二&#xff1a;创建集群外部也可访问的Service二、pod详解pod的资源清单pod 配置基本配置镜像拉取启动命令环境变量端口配置资源配额一、Service 虽然每个…

NumPy 数组应用初探

NumPy是Python中科学计算的基本包。它是一个Python库&#xff0c;提供了一个多维数组对象&#xff0c;各种派生对象&#xff08;如屏蔽数组和矩阵&#xff09;&#xff0c;以及对数组进行快速操作的各种例程&#xff0c;包括数学、逻辑、形状操作、排序、选择、I/O、离散傅立叶…

Python-可视化单词统计词频统计中文分词

可视化单词统计词频统计中文分词项目架构新建文件单词计数全文单词索引中文分词统计词频源代码项目架构 新建一个文件&#xff0c;输入文件的内容&#xff0c;查询此文件中关键字的出现的次数&#xff0c;关键字出现的位置&#xff0c;将所有的文本按照中文分词的词库进行切割…

运筹说 第76期 | 最短路问题

通过前面的学习&#xff0c;我们已经学会了图与网络问题中图的基本概念和最小树问题&#xff0c;本期小编带大家学习最短路问题。 一 最短路问题 最短路问题是网络理论中应用最广泛的问题之一。许多优化问题可以使用这个模型&#xff0c;如设备更新、管道敷设、线路安排、厂区…

tensorboard attempted to bind to port 6006,but it was already in use

我尝试运行tensorboard是遇到错误 这篇博客给了两个解决方案&#xff1a;

弹出 think-cell 许可证密钥窗口丨使用教程

think-cell需要使用有效的许可证密钥才能运行。每次启动 Microsoft PowerPoint 或 Microsoft Excel 时&#xff0c;都会检查许可证密钥。若您的系统上找不到任何有效的许可证信息&#xff0c;或许可证密钥即将到期&#xff0c;则会显示 think-cell 许可证密钥对话窗口。 thin…

UDP-糖,UDP-GlcNAc 5′-二磷酸尿嘧啶核苷-N-乙酰半乳糖胺二钠盐 UDP-N-acetylglucosamine

产品名称&#xff1a; UDP-GlcNAc 5′-二磷酸尿嘧啶核苷-N-乙酰半乳糖胺二钠盐 UDP-N-acetylglucosamine 产地&#xff1a;西安 规格&#xff1a;1mg 5mg 10mg 纯度&#xff1a;99% 用途&#xff1a;仅用于科研 温馨提示&#xff1a;仅用于科研&#xff0c;不能用于人体…

R语言法国足球联赛球员多重对应分析(MCA)

数据集 fooball球员在场上的位置 数据来自国际足联的视频游戏FIFA 。游戏的特点是在游戏的各个方面评价每个球员的能力。等级是量化变量&#xff08;介于0和100之间&#xff09;&#xff0c;但我们将它们转换为分类变量。所有能力都被编码在4个等级&#xff1a;1.低/ 2.平均/ …

Spring、SpringMVC和SpringBoot

常用的java框架有: SSH组合 SpringMVCSpringHibernate SSM组合 SpringMVCSpringMybatis&#xff08;流行组合&#xff09; SpringBoot springCloud 权限管控框架 Shiro、SpringSecurity 一. 概念 1. Spring Spring是一个开源容器框架&#xff0c;可以接管web层&#xf…

显卡---显卡驱动---CUDA---Cudnn

1. 背景 最近在follow百度的CAE这篇论文时&#xff0c;源码需要的环境为&#xff1a; python 3.7 cuda: 11.0 cudnn: 8.0.4 gcc 8.2 该版本要求与我目前使用的服务器上的CUDA版本不相符合。因此搜索了一篇国外小哥的文章&#xff0c;讲述了如何在一台服务器上安装多个CUDA和Cud…

【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

平衡搜索树——红黑树小记

文章目录红黑树定义规则操作规则平衡调整规则规则代码插入平衡调整代码左旋、右旋红黑树 定义 红黑树是一种 “平衡” 二叉 搜索树 “平衡”: 相比较于AVL树来说&#xff0c;是一种弱平衡 在红黑树中&#xff0c;任意从根到叶子的路径中&#xff0c;LEN(最长的路径)< 2*LE…

Keras深度学习实战(39)——音乐音频分类

Keras深度学习实战&#xff08;39&#xff09;——音乐音频分类0. 前言1. 数据集与模型分析1.1 数据集分析1.2 模型分析2. 歌曲流派分类模型2.1 数据加载与预处理2.2 模型构建与训练3. 聚类分析小结系列链接0. 前言 音乐音频分类技术能够基于音乐内容为音乐添加类别标签,在音乐…