Django学习——安装、创建项目、数据库、用户管理案例

news2024/11/16 17:43:22

目录

1、 安装django

1.1django是第三方模块,用pip install django 安装:

1.2 python的安装目录 :

2、创建项目

2.1在终端创建的步骤

 执行过程

2.2使用pycharm(企业版)创建 django项目

2.3对比两种方式

2.4默认文件介绍 

2.5app的创建和说明

创建app:

app目录:

2.6启动运行django

注意:加载目录不对,可能会导致项目出错

2.7模板和静态文件

2.7.1再写一个页面

 2.7.2templates模板

2.7.3静态文件 

2.8django的模板语法

 案例 

2.9请求和相应

3个请求

3个响应

 案例:用户登录

2.10orm_连接MySQL的模块

安装第三方模块:

2.11orm-创建数据库

1.自己创建数据库

2.12orm_连接MySQL的配置

2.Django连接数据库

2.13orm_类创建表

3.django操作表

2.14orm_创建和修改表结构

添加(如下)/删除表(删除相应的语句,然后重新执行2条命令语句)

修改表中的列

以后在开发中想要对表结构进行调整 

2.15orm-增删改查

操作表中的数据

新建数据:

 删除数据:

获取数据:

 更新数据:

 案例:用户管理

1、展示用户列表

2、添加用户

 3、删除用户


跟着B站武沛齐老师学习的笔记.....

1、 安装django

1.1django是第三方模块,用pip install django 安装:

1.2 python的安装目录 :

django除了会把安装的模块(框架的源码,需要导入并利用其中的功能)放到..../Lib/site-pachages中外,还会生产一个文件(这是一个帮助我们创建项目的工具)放在..../Scripts中。

2、创建项目

django中项目会有一些默认的文件和默认的文件夹

2.1在终端创建的步骤

  • 打开终端
  • 进入某个目录(项目想放在的地方)
D:\django idea\disease predication>
  • 执行命令,创建项目
在django-admin所在目录执行命令
"D:\software\study software\pycharm\python\Scripts\django-admin.exe" startproject 项目名称

如果D:\software\study software\pycharm\python\Scripts已经加入到系统环境变量,则可执行:
django-admin.exe startproject 项目名称

 执行过程

执行命令创建项目以及创建成功之后的项目文件概览:

2.2使用pycharm(企业版)创建 django项目

创建操作:

2.3对比两种方式

  • 命令行:创建的项目是标准的
  • pycharm: 在标准的基础上默认加了东西   

        1、创建templates了目录,【删除】即可

        2、在settings.py多了一句【删除】             

2.4默认文件介绍 

2.5app的创建和说明

app是一个应用,django中是可以编写大型的项目的,每一个大项目中有很多分类的小功能,支持拆分成一个个小的app

——项目
    ——app,用户管理【表结构、函数、HTML模板、CSS】
    ——app,订单管理
    ——app,API
    ——app,网站
每一个app可以有自己独立的数据库的表结构.....

创建app:

进入文件所在目录的终端,执行python manage.py startapp app01 命令创建 app。但是在创建的过程中出现了以下的报错:未能解决

 参考了:http://t.csdn.cn/imPci

重新建立了 项目,目前可以成功创建app,之后的操作学习以新建的djangoProject项目展开 

app目录:

2.6启动运行django

  • 确保app已注册【settings.py】
  •  编写URL和视图函数对应关系【urls.py】
  • 编写视图函数【views.py】

用户如果访问这个URL,会执行这个函数,函数返回了一个“欢迎使用” 的字符串,用户的浏览器上就会出现。

  • 启动django项目
    • 命令行启动:python manage.py runserver
    • PyCharm启动:

     

注意:加载目录不对,可能会导致项目出错

2.7模板和静态文件

2.7.1再写一个页面

所有的配置做完了,之后做开发的本质就是:在urls中添加一个对应关系,在views中写一个视图函数处理请求。

 2.7.2templates模板

返回一个HTML

2.7.3静态文件 

  •  在app目录下创建static文件夹

  • 引入静态文件 

2.8django的模板语法

模板语法是django开发的,本质:在HTML中写一些占位符 ,由数据对这些占位符进行替换和处理 

用户浏览器接收到的:

 案例 

伪联通消息中心

http://www.chinaunicom.com/news/list202304.html

后续完善

2.9请求和相应

3个请求

通过URL传递参数

 GET请求时放在明面上传递的,POST请求偷偷传递的,表面看不到

3个响应

 关于重定向:浏览器向某个网站发送请求,某个网站返回值告诉浏览器你去别的地方吧,浏览器自己去这个地了,跟网站没有关系,即下图的第二种形式:

 案例:用户登录

报错解决:

以上错误的解决办法如下:默认情况下Django比Flask多了一个功能,CSRF token的验证

 代码:

 最终实现的一个效果:

2.10orm_连接MySQL的模块

Django开发中引入了一个更简单操作数据库的机制。操作数据库更简单,内部提供了ORM框架。

安装第三方模块:

pip install  mysqlclient

安装出错:

 解决办法:

2.11orm-创建数据库

ORM可以帮我们做两件事:

  • 创建、删除、修改数据库中的表(不用自己写SQL语句)【无法创建数据库】
  • 操作表中的数据(不用写SQL语句)因为Django会将你写的代码通过ORM翻译成SQl语句

1.自己创建数据库

  • 启动MySQL服务
  • 自带工具创建数据库
    create database gx_day14 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

 

基础数据库的学习:(144条消息) 数据库与身份认证_大炮不想学习的博客-CSDN博客

2.12orm_连接MySQL的配置

自己电脑的mysql环境变量配置:

配置环境变量

 看是否配置成功

 

 

2.Django连接数据库

settings.py文件中进行配置和修改

默认Database用的sqllite文件数据库

换成下边这个:Django会默认帮我们连接数据库

2.13orm_类创建表

3.django操作表

  • 创建表
  • 删除表
  • 修改表

创建表:在models.py中

# UserInfo是类 必须继承  models.Model
class UserInfo(models.Model):
    # 字段
    name = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
    age = models.IntegerField()

执行命令:

python manage.py makemigrations
python manage.py migrate

注意:

  1. 确保python解释器安装了Mysqlclient
  2. 确保当前所在的路径是当前项目的根目录
  3. app需要提前注册(app没有注册到setting.py里边,models.py中的表不会提交到数据库 )

这里特别容易出错,更改一下解释器重新安装

最终进入到manage.py所在的目录,打开终端,执行命令,才得以成功安装!!!!

但是以上安装的操作,后续在数据库中查找不到表

注意:项目的路径中中不能有中文,后来移动的项目的位置,重新执行了以下命令:

  1. pip install mysqlcliennt
  2. python manage.py makemigrations
  3. python manage.py migrate

 为什么除了app01_userinfo这个表,还有一些其他的表?因为一旦执行命令回去内部找每一个app里边的models.py根据语句生成相应的表,但是Django默认提供了很多其他的app(django内置提供的功能,这些功能都是依赖于数据库的一些表的), 在setting.py中可以看到,所以生成表的时候把默认的一些表也生成了。不想用直接在下边图片中的对应位置注释掉即可

输入命令desc app01_userinfo;可以看到创建的表

2.14orm_创建和修改表结构

添加(如下)/删除表(删除相应的语句,然后重新执行2条命令语句

修改表中的列

由于已存在的列中可能有数据,所以新增列必须要指定新增列对应的数据:

  1. 手动输入值
  2. 设置默认值
  3. 允许为空

以后在开发中想要对表结构进行调整 

在models.py文件中操作类即可,然后执行命令:

python manage.py makemigrations
python manage.py migrate

2.15orm-增删改查

操作表中的数据

新建数据

 写个url来测试该功能

新建数据:

    # #### 1.新建 ####
    # Department.objects.create(title="销售部")
    # Department.objects.create(title="IT部")
    # Department.objects.create(title="运营部")
    # UserInfo.objects.create(name="武沛齐", password="123", age=19)
    # UserInfo.objects.create(name="朱虎飞", password="666", age=29)
    # UserInfo.objects.create(name="吴阳军", password="666")

 删除数据:

    # #### 2.删除 ####
    # UserInfo.objects.filter(id=3).delete()
    # Department.objects.all().delete()
    # UserInfo.objects.all().delete()

获取数据:

获取符合条件的所有数据

获取某一行数据

 更新数据:

    # #### 4.更新数据 ####
    UserInfo.objects.all().update(password=999)
    UserInfo.objects.filter(id=19).update(age=999)
    UserInfo.objects.filter(name="朱虎飞").update(age=999)
    return HttpResponse("耶耶耶")

 案例:用户管理

1、展示用户列表

  • url.py
  • view.py函数

    获取所有用户的信息

    html渲染

2、添加用户

实现用户输入用户,然后添加到数据库

  • url.py
  • view.py函数

        GET:看到页面,输入内容

        POST:提交——>写入到数据库

 在列表页加按钮,点击直接跳转到添加页面

 3、删除用户

  • url.py
  • view.py函数
需求

http://127.0.0.1:8000/info/delete/?nid=1
http://127.0.0.1:8000/info/delete/?nid=2
http://127.0.0.1:8000/info/delete/?nid=21

def 函数(request):
    #.GET在url后边获取传过来的参数,POST是获取请求体传过来的值
    nid=request.GET.get("nid")
    UserInfo.objects.filter(id=nid).delete()
    return HttpResponse("删除成功")

 

 

 

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

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

相关文章

推荐5款体积小、无广告、超实用的办公软件

大家好,我又来啦,今天给大家带来的几款软件,共同特点都是无广告、超实用,大家观看完可以自行搜索下载哦。 1.网络分析工具——Wireshark Wireshark 是一款开源的网络分析工具,它可以让你捕获和浏览网络上的数据包&am…

《我命由我不由天》蔡志忠——笔记二

目录 经典记录 天才不是天生的 如何认识自己、如何发掘和重用自己 自己拯救自己才是唯一出路 了解自己是人生第一个智慧 科学家证实,成就与选择目标的年龄成反比! “努力无用论” 经典记录 天才不是天生的 美国物理学家理查德费曼两三岁时&#x…

Ubuntu18.04 制作系统ISO镜像并物理机还原(Systemback)

简单记录使用Systemback工具打包Ubuntu系统得到iso镜像文件,并在物理机上进行还原(安装)的流程。测试结果发现,使用打包的iso文件安装得到的Ubuntu系统继承了我之前的Ubuntu系统,包括并不限于如下内容:Home…

公司新来个卷王,让人崩溃...

最近内卷严重,各种跳槽裁员,相信很多小伙伴也在准备今年的面试计划。 在此展示一套学习笔记 / 面试手册,年后跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的软件测试技术栈,非常珍贵&#x…

母亲节营销案例大盘点,真的有被狠狠共情住

⼀直以来,节⽇营销都是品牌借势和消费者建⽴情感链接的好时机。尤其是在母亲节这个温情的⽇⼦⾥,借助催泪、温情的⼴告歌颂母爱的无私与伟⼤来打动消费,也成为品牌母亲节营销的标配。 随之⽽来的,越来越多的品牌也⾯临困局&#x…

基于粒子群算法优化的核极限学习机(KELM)分类算法-附代码

基于粒子群算法优化的核极限学习机(KELM)分类算法 文章目录 基于粒子群算法优化的核极限学习机(KELM)分类算法1.KELM理论基础2.分类问题3.基于粒子群算法优化的KELM4.测试结果5.Matlab代码 摘要:本文利用粒子群算法对核极限学习机(KELM)进行优化,并用于分…

三硬币模型——机器学习课后作业

题目要求: 给出解决代码如下: import numpy as npdef miu_calc(pii, pi, qi, yj):up_b pii * pi ** yj * (1 - pi) ** (1 - yj)up_c (1 - pii) * qi ** yj * (1 - qi) ** (1 - yj)return up_b / (up_b up_c)yj np.array([1, 1, 0, 1, 0, 0, 1, 0, 1…

MySQL数据库的备份与恢复

一、数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为操作错误运算错误磁盘故障灾难(如火灾、地震)和盗窃 二、数据…

华为OD机试 - 第一个错误的版本(Java)

一、题目描述 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, …, n]&#xff…

【seata的部署和集成】

seata的部署和集成 seata的部署和集成一、部署Seata的tc-server1.下载2.解压3.修改配置4.在nacos添加配置5.创建数据库表6.启动TC服务 二、微服务集成seata1.引入依赖2.修改配置文件 三、TC服务的高可用和异地容灾1.模拟异地容灾的TC集群2.将事务组映射配置到nacos3.微服务读取…

应用在虚机和容器场景下如何优雅上下线

在生产场景中部署的服务提供者常因业务升级或其他场景需要下线和上线的部署操作,本文总结了应用在上下线过程中会遇到的典型问题,并思考在虚机和容器场景该如何处理这些问题,规避该过程中可能出现的服务消费者的请求失败,实现应用…

人工智能学习07--pytorch16--MobileNet网络详解

MobileNet详解 DW卷积: 每个卷积核的深度为1,而不是像之前一样等于特征矩阵的深度。 每个卷积核只负责输入特征矩阵的一个channel进行卷积运算,再得到相应的输出矩阵的一个channel。 因为每个卷积核只负责一个channel,则采用的特征…

Android WebView 的 addJavascriptInterface 探究

Android WebView 的 addJavascriptInterface 探究 一、前言 Java和JS交互的方式有多种,这里探讨的方式是通过以下方式进行的交互。 webView.addJavascriptInterface(this, "JSBridge") 这篇文章是想弄明白 JavaScript 和 Java是如何实现这种方式互调的,就从源码…

C高级 day1

初始工作路径不在家目录下,在不切换路径的情况下,在家目录下创建一个subdir目录,在subdir这个目录下,创建subdir1和subdir2,并且把/etc/passwd拷贝到subdir1中,把/etc/group文件拷贝到subdir2中&#xff0c…

java获取登陆用户ip方法

今天和大家分享一下获取登录用户 ip的方法,如果你想获取自己的登陆用户 ip,可以参考以下思路: 1.可以通过 Java动态链接库的方式获取到,方法很简单,就是把需要的 ip地址添加到动态链接库中,然后在需要用到时…

Word三线表创建

三线表是论文写作中经常使用到的表格格式 自定义三线表 “插入”-->“表格”,随便插入一个表格,然后将光标移动到表格内 “表设计”-->“其他”-->“新建表格样式” 修改模板名称为“三线表”,方便下次直接套用 首先设置标题行【…

把苹果全家桶用于VR全身追踪是什么体验

此前,青亭网曾报道了一项无需摄像头的VR全身追踪方案:Standable: Full Body Estimation(简称SFBE),这套方案就是利用了头显双手柄数据来模拟预测全身动作数据,效果还算不错。 近期在CHI2023活动上&#xff…

深度学习02-神经网络(MLP多层感知器)

文章目录 神经网络简介学习路径分类 多层感知器(MLP)神经网络认识两层神经网络输入层从输入层到隐藏层从隐藏层到输出层激活层输出的正规化如何衡量输出的好坏反向传播与参数优化过拟合 BP算法推导定义算法讲解前向传播反向传播 具体实例 tensorflow实战…

Python并发编程之进程理论

前言 本文将详细介绍进程相关概念。 进程和程序 计算机上的未运行的QQ、Wechat等都属于程序,但是一旦当这些程序运行起来的话,就可以被称为进程。因此可以如下定义程序和进程: 程序:就是存在硬盘上的一堆代码。 进程&#xf…

【AI】YOLOV1原理详解

1、简介 YOLO:You Only Look Once,一种对象检测算法,2016年由Redmon提出 优点:速度快,适合于实时检测任务; 缺点:准确度略低 2、其它算法对象检测原理 在YOLO出现之前,其它算法使用分类器对测试图像的不同切片进行评估。 例如,使用一个小窗口在图像上滑动来获取一小…