五、初识Django

初识Django

    • 1.安装django
    • 2.创建项目
      • 2.1第一种方式:在终端
      • 2.2第二种方式:Pycharm
    • 3.创建app
    • 4.快速上手
      • 4.1再写一个页面
      • 4.2templates模板
      • 4.3静态文件
        • 4.3.1static目录
        • 4.3.2引用静态文件
    • 5.模板语法
    • 案例:伪联通新闻中心
    • 6.请求和相应
    • 案例:用户登录
    • 7.数据库操作
      • 7.1安装第三方模块
      • 7.2 ORM
        • 1.自己创建数据库
        • 2.django连接数据库
        • 3.django操作表
        • 4.表中的数据
    • 案例:用户管理
      • 1.展示用户列表
      • 2.添加用户
      • 3.删除用户

  • python知识点:函数、面向对象。
  • 前端开发:HTML、CSS、JavaScript、jQuery、BootStrap。
  • MySQL数据库
  • python的Web框架:
    • Flask,自身短小精悍+第三方组件。
    • Django,内部已集成了很多组件+第三方组件。【主要】

1.安装django

pip install django

在这里插入图片描述

c:\python39
	- python.exe
	- Scripts
		- pip.exe
		- django-admin.exe     【工具,创建django项目中的文件和文件夹】
	- Lib
		- 内置模块
		- site-packages
			- openpyxl
			- python-docx
			- flask
			- django           【框架的源码】

2.创建项目

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

2.1第一种方式:在终端

  • 打开终端

  • 进入某个目录(项目放在哪里)。

    /Users/wupeiqi/PycharmProjects/gx
    
  • 执行命令创建项目

    "c:\python39\Scripts\django-admin.exe" startproject 项目名称
    
    # 如果 c:\python39\Scripts 已加入环境系统环境变量。
    
    django-admin startproject 项目名称
    
    /Library/Frameworks/Python.frmework/Versions/3.9/bin/django-admin startproject mysite
    

    在这里插入图片描述

在这里插入图片描述

2.2第二种方式:Pycharm

注意:

- Python安装目录:C:\python39\python.exe lib....

- F:\pycode\(基于Django创建的项目)

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

特殊说明:

  • 第一种方式:命令行,创建的项目是标准的。
  • 第二种方式:pycharm,在标准的基础上默认给咱们加了点东西。
    • 创建了一个templates目录【删除】

    • settings.py中【删除】

      在这里插入图片描述

默认项目的文件介绍:

D:\me\study\django\gx>tree /f mysite
卷 新加卷 的文件夹 PATH 列表
卷序列号为 38BF-A450
D:\ME\STUDY\DJANGO\GX\MYSITE
│  manage.py              【项目的管理,启动项目、创建app、数据管理】
│
├─.idea
│      .gitignore
│      workspace.xml
│
└─mysite
        asgi.py            【异步:接收网络请求】
        settings.py		   【项目配置】           【***常常修改***】
        urls.py			   【URL和函数的对应关系】 【***常常修改***】
        wsgi.py            【同步:接收网络请求】
        __init__.py

3.创建app

- 项目
	- app,用户管理【表结构、函数、HTML模板、CSS】
	- app,订单管理【表结构、函数、HTML模板、CSS】
	- app,后台管理【表结构、函数、HTML模板、CSS】
	- app,网站   【表结构、函数、HTML模板、CSS】
	- app,API   【表结构、函数、HTML模板、CSS】
	..

注意:我们开发比较简洁,用不到多app,一般情况下,项目下创建1个app即可。

在这里插入图片描述

(djangoProject) PS D:\me\study\django\gx\mysite2> tree /f
卷 新加卷 的文件夹 PATH 列表
卷序列号为 38BF-A450
D:.
│  a.py
│  manage.py
│
├─.idea
│      .gitignore
│      workspace.xml
│
├─app01
│  │  admin.py			  【固定,不用动】django默认提供了admin后台管理
│  │  apps.py             【固定,不用动】app启动类
│  │  models.py			  【***重要***】,对数据库操作
│  │  tests.py            【固定,不用动】单元测试
│  │  views.py            【***重要***】,函数
│  │  __init__.py
│  │
│  └─migrations           【固定,不用动】数据库变更记录
│          __init__.py
│
└─mysite2
    │  asgi.py
    │  settings.py
    │  urls.py            【URL->函数】
    │  wsgi.py
    │  __init__.py
    │
    └─__pycache__
            settings.cpython-39.pyc
            __init__.cpython-39.pyc

4.快速上手

  • 确保app已经注册【setting.py】,注意:不要放到中间件中
    在这里插入图片描述

  • 编写URL和视图函数对应关系【urls.py】
    在这里插入图片描述

  • 编写视图函数【views.py】
    在这里插入图片描述

  • 启动项目

    • 命令行启动

      python manage.py runserver
      
    • Pycharm启动

      在这里插入图片描述

4.1再写一个页面

- url -> 函数
- 函数

在这里插入图片描述

4.2templates模板

在这里插入图片描述

4.3静态文件

在开发过程中一般将:

  • 图片
  • CSS
  • js

都会当作静态文件处理。

4.3.1static目录

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

在这里插入图片描述

4.3.2引用静态文件

在这里插入图片描述

5.模板语法

本质上:在HTML中写一些占位符,由数据对这些占位符进行替换和处理。

在这里插入图片描述

案例:伪联通新闻中心

在这里插入图片描述

6.请求和相应

在这里插入图片描述

关于重定向:

在这里插入图片描述

案例:用户登录

def login(request):
    if request.method == "GET":
        return render(request, "login.html")

    # 如果是POST请求,获取用户提交的数据
    # print(request.POST)
    username = request.POST.get("user")
    password = request.POST.get("pwd")
    if username == "root" and password == "123":
        return redirect("https://www.chinaunicom.com.cn/")

    # return HttpResponse("登录失败")
    return render(request, "login.html", {"error_msg": "用户名或密码错误"})

7.数据库操作

  • MySQL数据库+pymysql

    import pymysql
    
    # 1.连接MySQL
    conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='xx', db='unicom', charset='utf8')
    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
    
    # 2.发送指令
    cursor.execute("insert into admin(username,password,mobile) values('wupeiqi','qwe123456','151555555')")
    conn.commit()
    
    # 3.关闭
    cursor.close()
    conn.close()
    
  • Django开发操作数据库更简单,内部提供了ORM框架。

在这里插入图片描述

7.1安装第三方模块

pip install mysqlclient

7.2 ORM

ORM可以帮助我们做两件事:

  • 创建、修改、删除数据库中的表(不用你写SQL语句)。【无法创建数据库】
  • 操作表中的数据(不用写SQL语句)
1.自己创建数据库
  • 启动MySQL服务

  • 自带工具创建数据库

    create database gx_day15 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
    

在这里插入图片描述

2.django连接数据库

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

DATABASES = {
    'default':
        {
            'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
            'NAME': 'gx_day15',  # 数据库名称
            'HOST': '127.0.0.1',  # 数据库地址,本机 ip 地址 127.0.0.1
            'PORT': 3306,  # 端口
            'USER': 'root',  # 数据库用户名
            'PASSWORD': 'xxxxx',  # 数据库密码
        }
}
3.django操作表
  • 创建表
  • 删除表
  • 修改表

创建表:在models.py文件中:

在这里插入图片描述

create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
)

执行命令:

python manage.py makemigrations
python manage.py migrate

注意:app需要提前注册。

在这里插入图片描述

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

  • 1,手动输入一个值

  • 设置默认值

    age = models.IntegerField(default=2)
    
  • 允许为空

    data = models.IntegerField(null=True,blank=True)
    

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

  • 在models.py文件中操作类即可。

  • 命令

    python manage.py makemigrations
    python manage.py migrate
    
4.表中的数据
# 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()

# 3、获取数据
# 3.1、获取符合条件的所有数据
# data_list = [对象,对象,对象]  QuerySet类型
# data_list = UserInfo.objects.all()
# for obj in data_list:
#     print(obj.id, obj.name, obj.password, obj.age)

# 3.1、获取第一条数据【对象】
# row_obj = UserInfo.objects.filter(id=1).first()
# print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

# 4、更新数据
# UserInfo.objects.all().update(password="9999")
# UserInfo.objects.filter(name="住户非").update(age="999")

案例:用户管理

1.展示用户列表

  • url
  • 函数
    • 获取所有用户信息
    • HTML渲染

2.添加用户

  • url
  • 函数
    • GET,看到页面,输入内容。
    • POST,提交 -> 写入到数据库。

3.删除用户

  • url
  • 函数
http://localhost:8000/info/delete/?nid=1
http://localhost:8000/info/delete/?nid=2
http://localhost:8000/info/delete/?nid=3


def 函数(request):
	nid = request.GET.get("nid")
	UserInfo.object.filter(id=nid).delete()
	
	return HttpResPos

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

23 OpenCV 直方图比较

文章目录 直方图比较的目的相关性计算 (CV_COMP_CORREL)卡方计算 (CV_COMP_CHISQR)十字计算(CV_COMP_INTERSECT)巴氏距离计算 (CV_COMP_BHATTACHARYYA )compareHist 直方图比较算子示例 直方图比较的目的 直方图比较的目的是衡量两幅图像之间的相似度或差异度。通过计算图像的颜…

数据可视化实战(三)

图书销量情况对比 import pandas as pd import matplotlib.pyplot as plt # 读取Excel数据 dfpd.read_excel(mrbook.xlsx) df序号书号序号.1月份销量rate0B189.787569e1211月15060.31B199.787569e1222月1200-0.32B259.787569e1233月33050.63B219.787569e1244月66100.54NaNNaN5…

redis从入门到实战

Redis基础 简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据存储和缓存系统。它是一个高性能的键值存储数据库,,以其快速的读写能力、丰富的数据结构和多种应用场景而受到广泛关注。默认的database有16个&…

使用Docker搭建YesPlayMusic网易云音乐播放器并发布至公网访问

目录 ⛳️推荐 1. 安装Docker 2. 本地安装部署YesPlayMusic 3. 部署公有云YesPlayMusic播放器 3.1 安装cpolar内网穿透 3.2 固定YesPlayMusic公网地址 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一…

Docker网桥、DockerFile自定义镜像、DockerCompose工具(二)

这里写目录标题 1、网桥1.1、网络相关操作1.1.1、创建网络1.1.2、列出网络1.1.3、加入网络1.1.4、查看网络详情1.1.5、删除网络 2、Dockerfile自定义镜像2.1、镜像结构2.2、Dockerfile语法2.2.1、概述2.2.2、快速入门2.2.1、FROM2.2.2、CMD2.2.3、ENV2.2.4、WORKDIR2.2.5、run2…

银行OA系统|基于SpringBoot架构+ Mysql+Java+ B/S结构的银行OA系统设计与实现(可运行源码+数据库+设计文档)

推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java,ssm,springboot的平台设计与实现项目系统开发资源(可…

基于FPGA的FFT图像滤波设计

1.FFT滤波算法介绍 FFT滤波就是通过傅里叶运算将图像转换到频域空间,然后在频域中对图像进行处理,最后将处理后的图像通过傅里叶逆运算将图像转会到时域空间。 在频域空间中,我们能够更好的对图像的噪声进行分析,然后找出相关规律…

MAC废纸篓删掉还能复原吗 MAC废纸篓倾倒掉的文件怎么恢复 删除的东西在哪里可以找回来 怎么找回已删除的文件

MAC系统中的废纸篓(Trash)通常指用来临时存放用户即将丢弃的文件的地方。MAC系统的废纸篓功能相当于Windows系统的垃圾回收站,通过废纸篓删除的文件,一般是无法从系统中操作还原。那么,MAC废纸篓删掉还能复原吗&#x…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享,严禁他用!!如有侵权,请联系删除 目录 一、知识引入 (一)隐藏层 (二)泛化 (三…

UE4 Json事件设置Asset值(Asset如果都在同一目录下)

通过Json事件来设置,比如骨骼网格体(换皮)等等

202112青少年软件编程(Scratch图形化)等级考试试卷(三级)

第1题:【 单选题】 下列程序哪个可以实现: 按下空格键, 播放完音乐后说“你好! ” 2 秒? ( ) A: B: C: D: 【正确答案】: C 【试题解析】 : 第2题:【 单选题】 执行下列程序, 变量 N 的值不可能是? ( ) A:1 B:4 C:5 D:6 【正确答案】: D 【试题解析】…

Git进阶用法:Git分支轻松使用,配有图文

一、文章内容 git和分支相关的概念.git和分支有关的命令.git项目实战环节. 二、相关概念 分支:分支的概念好比树干的分支,每一跟分支都是从主干分出来的,营养是主干给的,所以在git里主干和分支也是如此,在git里主分…

day02_mysql-DDLDMLDQL_课后练习 - 参考答案

文章目录 day02_mysql_课后练习第1题第2题 day02_mysql_课后练习 第1题 案例: 1、创建数据库test02_library 2、创建表格books 字段名字段说明数据类型b_id书编号int(11)b_name书名varchar(50)authors作者varchar(100)price价格floatpub…

opengl 学习(六)-----坐标系统与摄像机

坐标系统与摄像机 分类引言坐标系统摄像机教程在CMake中使用全局定义预编译宏,来控制是否开启错误检查补充 分类 opengl c 引言 OpenGL希望在每次顶点着色器运行后,我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#xff…

pcl采样:随机采样

pcl 随机采样,实际上就是抽稀 头文件 代码 结果

ubuntu系统下如何使用vscode编译和调试#小白入门#

编程环境:ubuntu系统为18.04.1,vscode版本为1.66.2 一、VSCode切换中文显示: 1、vscode安装完成后启动,在左侧externsions中搜索“简体中文”插件,并完成安装: 2、选择右下角齿轮形状的"Manage"&#xff…

【C++】弥补C语言的不足(①命名冲突问题)

Hello,这里是关于C的入门,C的命名冲突问题,如果你像我一样对命名空间满是疑惑,只知道using namespace std,那么可以看下这篇文章,我自己之前的一些疑惑以及一些形象的理解。 命名冲突问题与命名空间 🌻命名…

【图解物联网】第1章 物联网的基础知识

1.1 物联网入门 1.1.1 物联网 物联网的英语是Internet of Things,缩写为IoT,这里的“物”指的是我们身边一切能与网络相连的物品。只要能与网络相连,就都是物联网说的“物”。 物联网就是“物”之间通过连接互联网来共享信息并产生…

CSS 让元素根据内容自适应宽度

一、需求 点击链接跳转,只点击标红区域才跳转,右侧空白区域不要跳转 二、实现 宽度太宽,导致右侧空白区域也加了跳转效果,修改为 将元素的最大宽度设置为其内容所需的宽度。 方法一:建议方式 使用 display: inline…

MyBatis框架简述

作用 降低开发人员使用JDBC的难度降低开发人员进行Dao层的开发难度 MyBatis本质上就是对JDBC的封装,通过MyBatis完成CRUD。MyBatis在三层架构中负责持久层的,属于持久层框架。MyBatis的发展历程:【引用百度百科】 MyBatis本是apache的一个开…