五、初识Django

初识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.删除用户

五、初识Django

  • 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
│
└─mysiteasgi.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=3def 函数(request):nid = request.GET.get("nid")UserInfo.object.filter(id=nid).delete()return HttpResPos

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis中的String编码转换底层原理及6.0新特性

String编码转换底层原理 String对象为什么把大于39字节或者44字节的字符串编码为raw,小于的时候编码为embstr? 在Redis3.2以前的版本中,SDS作为字符串类型中存储字符串内容的结构,源码如下: 3.2版本SDS结构 struct sdshdr {// 记录buf数…

【Unity每日一记】unity中的内置宏和条件编译(Unity内置脚本符号)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

项目性能优化—使用JMeter压测SpringBoot项目

我们的压力测试架构图如下: 配置JMeter 在JMeter的bin目录,双击jmeter.bat 新建一个测试计划,并右键添加线程组: 进行配置 一共会发生4万次请求。 ctrl s保存; 添加http请求: 配置http请求:…

openEuler-22.03-LTS-SP2更改阿里云yum安装源

openEuler-22.03-LTS-SP2更改阿里云yum安装源 将文件/etc/yum.repos.d/openEuler.repo,替换为以下内容 [OS] nameOS baseurlhttps://mirrors.aliyun.com/openeuler/openEuler-22.03-LTS-SP2/OS/$basearch/ enabled1 gpgcheck1 gpgkeyhttps://mirrors.aliyun.com/op…

为 java 开发者设计的性能测试框架,用于压测+测试报告生成

拓展阅读 junit5 系列教程 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息) Junit performance rely on junit5 and jdk8.(java 性能测试框架。压测测试报告生成。) junitperf junitperf 是一款为 java 开…

蓝桥杯练习02随机数生成器

随机数生成器 介绍 实际工作中随机数的使用特别多,比如随机抽奖、随机翻牌。通过随机数还能实现很多有趣的效果,比如随机改变元素的位置或颜色。 本题需要在已提供的基础项目中使用JS知识封装一个函数,该函数可以根据需要,生成指…

排序问题—java实现

冒泡排序 算法思想: 每次比较相邻元素,若逆序则交换位置,每一趟比较n-1次,确定一个最大值。故需比较n趟,来确定n个数的位置。 外循环来表示比较的趟数,每一趟确定一个最大数的位置内循环来表示相邻数字两…

服务器病毒木马通用排查处理应急响应流程

目录 一、勒索病毒发作的特征 二、勒索病毒的应急响应 三、勒索病毒预防与事后加固 一、勒索病毒发作的特征 如果发现大量统一后缀的文件;发现勒索信在Linux/home、/usr等目录,在Windows 桌面或者是被加密文件的文件夹下。如果存在以上特…

mybatis-plus 的saveBatch性能分析

Mybatis-Plus 的批量保存saveBatch 性能分析 目录 Mybatis-Plus 的批量保存saveBatch 性能分析背景批量保存的使用方案循环插入使用PreparedStatement 预编译优点:缺点: Mybatis-Plus 的saveBatchMybatis-Plus实现真正的批量插入自定义sql注入器定义通用…

Linux进程通信补充——System V通信

三、System V进程通信 ​ System V是一个单独设计的内核模块; ​ 这套标准的设计不符合Linux下一切皆文件的思想,尽管隶属于文件部分,但是已经是一个独立的模块,并且shmid与文件描述符之间的兼容性做的并不好,网络通…

华为汽车业务迎关键节点,长安深蓝加入HI模式,车BU预计今年扭亏

‍编辑 |HiEV 一年之前,同样是在电动汽车百人会的论坛上,余承东在外界对于华为和AITO的质疑声中,第一次公开阐释了华为选择走智选车模式的逻辑。 一年之后,伴随问界M7改款、问界M9上市,华为智选车模式的面貌已经发生了…

使用jenkins-pipeline进行利用项目文件自动化部署到k8s上

Discard old builds:丢弃旧的构建,目的是管理存储空间、提升性能以及保持环境整洁 Do not allow concurrent builds: 禁止并发构建是指同一时间内只允许一个构建任务执行,避免多个构建同时运行可能带来的问题 Do not allow the pipeline to resume if the controller resta…