Djiango零基础-快速了解基本框架笔记-附案例

news/2025/2/4 17:51:41/

初识Djiango

1. 安装djiango

pip install django==4.1 -i https://mirrors.aliyun.com/pypi/simple/
C:\python38- python.exe- Scripts- pip.exe- djiango-admin.exe		【工具,创建djiango项目】- Lib- 内置模块- site-packages- openpyxl- python-docx- flask- djiango	【框架的源码】

2.创建项目

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

2.1 在终端

  • 打开终端
  • 进入某个目录(项目放在哪里)
D:\PycharmDjiango
  • 执行命令创建项目
"C:\Users\lq\AppData\Local\Programs\Python\Python38\Scripts\djiango-admin.exe" startproject 项目名称
如果 C:\Users\lq\AppData\Local\Programs\Python\Python38\Scripts 已加入环境变量。djiango-admin startproject 项目名称

在这里插入图片描述

2.2 Pycharm

在这里插入图片描述

说明:

  • 命令行,创建的项目是标准的。
  • pycharm,在标准的基础上默认加了一些东西。
    • 创建了一个templates目录(删除)
    • settings.py中多出的对应路径
      在这里插入图片描述

默认项目文件的介绍:

mysite
manage.py 	【项目的管理,启动项目、创建app、数据管理】【常用】
asgi.py		【接收网络请求】 【不要动】
wsgi.py		【接收网络请求】 【不要动】
urls.py		【URL和函数的对应关系】 【常操作】
setting.py	【项目配置】 【连接数据库...】 【常操作】

3.APP

- 项目- app, 用户管理- app, 订单管理- app, 后台管理- app, 网站- app, API...

在这里插入图片描述

app01
- apps.py 【固定,不用动】app启动类
migrations 【固定,不用动】数据库变更纪录
tests.py  【固定,不用动】单元测试
admin.py  【固定,不用动】djiango默认提供一个admin后台管理功能
views.py  【重要】函数
models.py  【重要】对数据库操作

4.快速上手

  • app注册【setting.py】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XpqLs7k5-1675428603249)(D:\Typora_note\Djiango\image-20230128174743885.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t18P69gs-1675428603249)(D:\Typora_note\Djiango\image-20230128174819065.png)]

  • 编写URL和视图函数对应关系【urls.py】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HErDI9Wa-1675428603249)(D:\Typora_note\Djiango\image-20230128175611062.png)]

  • 编写视图函数【views】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sKci62JV-1675428603250)(D:\Typora_note\Djiango\image-20230128175750429.png)]

  • 启动djiango项目

    • 命令行启动
    python manage.py runserver
    
    • Pycharm启动

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5J8TOfg5-1675428603250)(D:\Typora_note\Djiango\image-20230128180011779.png)]

4.1 添加页面

- url -> 函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9WZUwdSs-1675428603250)(D:\Typora_note\Djiango\image-20230128193544025.png)]

4.2 templates模板

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-06DzolqR-1675428603250)(D:\Typora_note\Djiango\image-20230128203209244.png)]

4.3 静态文件

在开发过程中一般将:

  • 图片
  • CSS
  • js

当做静态文件处理

4.3.1 static目录

在app目录下创建static

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XxKa8U43-1675428603250)(D:\Typora_note\Djiango\image-20230128210708307.png)]

4.3.2 引用静态文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4aKulfsU-1675428603251)(D:\Typora_note\Djiango\image-20230128210757324.png)]

5.模板语法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tNZzyzR4-1675428603251)(D:\Typora_note\Djiango\image-20230128222047497.png)]

案例:新闻中心

1.创建url和视图对应关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GdiG30F5-1675428603251)(D:\Typora_note\Djiango\image-20230128230121230.png)]

2.编写视图函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e4HdXtp6-1675428603251)(D:\Typora_note\Djiango\image-20230128230149148.png)]

3.使用模板显示数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N9Awwncr-1675428603251)(D:\Typora_note\Djiango\image-20230128230220406.png)]

6.请求和响应

渲染:

  • 字符串
  • 列表
  • 字典
  • 列表套字典
  • 爬虫

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knz1JjZZ-1675428603251)(../Djiango/image-20230129174517413.png)]

案例:用户登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lUyJHsbP-1675428603252)(../Djiango/image-20230129230800422.png)]

7.数据库操作

利用ORM框架,不用进行SQL语句编写,使用ORM语法执行后可以自动生成SQL语句传给数据库。

7.1 安装模块

pip install mysqlclient

7.2 ORM

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

  • 创建、修改、删除数据库的表【无法创建数据库】
  • 操作表中的数据

1.创建自己的数据库

  • 启动MySQL服务
net start mysql57
  • 利用自带工具创建数据库
create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

2. djiango连接数据库

在settings.py中进行配置修改

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUAm3yxE-1675428603252)(../Djiango/image-20230130195113943.png)]

ENGINE:数据库类型
NAME:数据库名称
USER:用户名
PASSWORD:abc123.
HOST:连接的主机地址
PORT:连接的主机端口

3. djiango操作表

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

创建表:在models.py文件中

from django.db import modelsclass 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

注意:app需要提前注册。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7aGtUh13-1675428603252)(../Djiango/image-20230130220903700.png)]

在表中新增列时,由于表中已有数据,所以在新增列时需要指定列的值

  • 固定值
age = models.IntegerField(default=2)
  • 允许为空
data = models.IntegerField(null=True, blank=True)

ORM增删改查:

def orm(request):# 1.增加数据# UserInfo.objects.create(name="刘备")# UserInfo.objects.create(name="关羽")# UserInfo.objects.create(name="张飞")# 2.删除数据# UserInfo.objects.filter(id=3).delete()# 3.查看数据,获取数据 获取的数据为对象形式# data_list = UserInfo.objects.all()# for obj in data_list:#     print(obj.name, obj.password, obj.age)# 4.更新数据# UserInfo.objects.filter(id=1).update(password=999)

案例:用户管理

1. 展示用户列表

  • url
  • 函数
    • 获取所有用户信息
    • HTML渲染
def info_list(request):data_list = UserInfo.objects.all()return render(request, "info_list.html", {"data_list": data_list})
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<a href="/info_add">添加</a>
<table border="1"><thead><tr><th>ID</th><th>姓名</th><th>密码</th><th>年龄</th><th>操作</th></tr></thead><tbody>{% for obj in data_list %}<tr><th>{{ obj.id }}</th><th>{{ obj.name }}</th><th>{{ obj.password }}</th><th>{{ obj.age }}</th><th><a href="/info_delete/?uid={{ obj.id }}">删除</a></th></tr>{% endfor %}</tbody>
</table>
</body>
</html>

2. 添加用户

  • url
  • 函数
    • GET,看到页面,输入内容。
    • POST,提交->写入到数据库。
def info_add(request):if request.method == 'GET':return render(request, "info_add.html")user = request.POST.get("user")pwd = request.POST.get("pwd")age = request.POST.get("age")UserInfo.objects.create(name=user, password=pwd, age=age)return redirect("/info_list")
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h1>添加用户</h1><form method="post">{% csrf_token %}<input type="text" name="user" placeholder="用户名"><input type="text" name="pwd" placeholder="密码"><input type="text" name="age" placeholder="年龄"><input type="submit" value="提 交"></form>
</body>
</html>

3. 删除用户

  • url
  • 函数
    • GET,传入id删除
def info_delete(request):uid = request.GET.get("uid")UserInfo.objects.filter(id=uid).delete()return redirect("/info_list")

http://www.ppmy.cn/news/21852.html

相关文章

vitest第一章(初始vitest)

从三个角度分析vitest 他能做什么&#xff1f; 为什么要使用他&#xff1f; 使用它的优势是什么&#xff1f; vitest官网cn.vitest.dev/ 1.vitest能做什么 从官网介绍说这是一个单元测试框架&#xff0c;大家听到有测试两个字觉得这个是测试同学写的东西&#xff0c;其实这个…

vue3生命周期

每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤&#xff0c;比如设置好数据侦听&#xff0c;编译模板&#xff0c;挂载实例到 DOM&#xff0c;以及在数据改变时更新 DOM。在此过程中&#xff0c;它也会运行被称为生命周期钩子的函数&#xff0c;让开发者有机会在特定阶…

Allegro因为DRC报错无法使用走线居中命令的解决办法

Allegro因为DRC报错无法使用走线居中命令的解决办法 在用Allegro做PCB设计的时候,走线居中是非常实用的功能 但是这个功能只能在走线居中不会产生DRC的使用。 如果居中后仍然存在DRC,比如间距,等长等等DRC,如下图: 使用居中命令就会出现报错,如图,因为居中后线距离孔的…

数据结构:栈的学习

作者&#xff1a;爱塔居 专栏&#xff1a;数据结构 作者简介&#xff1a;大三学生&#xff0c;希望跟大家一起进步 目录 一、栈 1.1 概念 1.2 栈的使用 1.3 示例 二、栈的应用场景 2.1 改变元素的序列 2.2 逆波兰表达式求值 2.3 括号匹配 2.4 栈的压入、弹出序列 一、栈…

GitHub2022年十大热门编程语言榜单

全球知名代码托管平台 GitHub发布的2022年GitHub Octoverse年度报告公布了全球最流行的十大编程语言&#xff0c;其中JavaScript蝉联第一&#xff0c;Python位列次席。 编程是技术革新的核心&#xff0c;对于所有的编程开发人员来说&#xff0c;对世界范围内编程语言发展和趋势…

热门API接口它来啦 新鲜出炉

在这里我整理了一下2022年的热门API&#xff0c;好东西当然要大家一起分享啦~ IP归属地-IPv4区县级&#xff1a;根据IP地址查询归属地信息&#xff0c;包含43亿全量IPv4&#xff0c;支持到中国地区&#xff08;不含港台地区&#xff09;区县级别&#xff0c;含运营商数据。IP归…

0基础如何入门人工智能?

1.1 概念 根据维基百科的解释&#xff0c;人工智能是被机器展示的智力&#xff0c;与人类和其他动物的自然智能相反&#xff0c;在计算机科学中 AI 研究被定义为 “代理人软件程序”&#xff1a;任何能够感受周围环境并且能最大化它成功机会的设备。 1.2 重大事件 2016 年 3…

【C++】常量引用(常引用)一些经典问题

常量引用1.常量引用错误的案例2.常量引用的前提条件3.分析错误案例4.总结常量引用1.常量引用错误的案例2.常量引用的前提条件3.分析错误案例4.总结1.常量引用错误的案例 1.常量引用的使用的场景一般是用来修饰函数的形参&#xff0c;防止误操作。 比如&#xff1a; //在下列函数…