Django详细教程(一) - 基本操作

文章目录

  • 前言
  • 一、安装Django
  • 二、创建项目
    • 1.终端创建项目
    • 2.Pycharm创建项目(专业版才可以)
    • 3.默认文件介绍
  • 三、创建app
    • 1.app介绍
    • 2.默认文件介绍
  • 四、快速上手
    • 1.写一个网页
      • 步骤1:注册app 【settings.py】
      • 步骤2:编写URL和视图函数对应关系 【urls.py】
      • 步骤3:编写视图函数 【views.py】
      • 步骤4:启动django项目
    • 2.url与view的对应关系
    • 3.templates模板
    • 4.静态文件
      • static目录
      • html引用静态文件
  • 五、模板语法案例:伪联通新闻中心
  • 六、请求和响应案例:用户登录
  • 七、数据库操作
    • 1.安装第三方模块
    • 2.ORM框架操作表
      • 步骤1:自己创建数据库
      • 步骤2:django连接数据库
      • 步骤3:类操作表
    • 3.ORM框架操作数据
      • 新建
      • 删除
      • 获取
      • 更新
  • 八、案例:用户管理
    • 功能1:展示用户
    • 功能2:添加用户
    • 功能3:删除用户

前言

Django是一个高级的Python Web框架,可以快速开发安全和可维护的网站。由经验丰富的开发者构建,Django负责处理网站开发中麻烦的部分,可以专注于编写应用程序,而无需重新开发。它是免费和开源的,有活跃繁荣的社区,丰富的文档,以及很多免费和付费的解决方案。

一、安装Django

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

二、创建项目

1.终端创建项目

  • 打开终端。
  • 进入某个目录(项目放在哪里)。
 /Users/wupeiqi/PycharmProjects/gx
  • 执行命令创建项目
 "c:\python39\Scripts\django-admin.exe" startproject 项目名称
  • 如果 c:\python39\Scripts 已加入环境系统环境变量。
django-admin startproject 项目名称

2.Pycharm创建项目(专业版才可以)

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

  • 命令行,创建的项目才是标准的。
  • pycharm,在标准的基础上默认给咱们加了点东西。
    • 创建了一个templates目录【一般在app内部使用,而不用全局的templates。要删除】
    • settings.py中【这句代码表示:每次先查找全局templates,再遍历每个app的templates。要删除】

在这里插入图片描述

3.默认文件介绍

mysite
├── manage.py         【项目的管理,启动项目、创建app、数据管理】【不要动】【***常常用***】
└── mysite├── __init__.py├── settings.py    【项目配置】          【***常常修改***】├── urls.py        【URL和函数的对应关系】【***常常修改***】├── asgi.py        【接收网络请求】【不要动】└── wsgi.py        【接收网络请求】【不要动】

三、创建app

1.app介绍

  • 我们开发比较简洁,用不到多app,一般情况下,项目下创建1个app即可
  • 一个项目也可以创建多个app:
- 项目- app,用户管理【表结构、函数、HTML模板、CSS】- app,订单管理【表结构、函数、HTML模板、CSS】- app,后台管理【表结构、函数、HTML模板、CSS】- app,网站   【表结构、函数、HTML模板、CSS】- app,API    【表结构、函数、HTML模板、CSS】...

在这里插入图片描述

2.默认文件介绍

├── app01
│   ├── __init__.py
│   ├── admin.py         【固定,不用动】django默认提供了admin后台管理。
│   ├── apps.py          【固定,不用动】app启动类
│   ├── migrations       【固定,不用动】数据库变更记录
│   │   └── __init__.py
│   ├── models.py        【**重要**】,对数据库操作。
│   ├── tests.py         【固定,不用动】单元测试
│   └── views.py         【**重要**】,函数。
├── manage.py
└── mysite2├── __init__.py├── asgi.py├── settings.py├── urls.py          【URL->函数】└── wsgi.py

四、快速上手

1.写一个网页

步骤1:注册app 【settings.py】

在这里插入图片描述

步骤2:编写URL和视图函数对应关系 【urls.py】

在这里插入图片描述

步骤3:编写视图函数 【views.py】

在这里插入图片描述

步骤4:启动django项目

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

在这里插入图片描述

2.url与view的对应关系

在这里插入图片描述

3.templates模板

  • 可以放html、css等

在这里插入图片描述

4.静态文件

static目录

  • 需要自己创建

在这里插入图片描述

html引用静态文件

  • Django推荐使用{% load static %}的方法导入

在这里插入图片描述

五、模板语法案例:伪联通新闻中心

注意templates

  • url

在这里插入图片描述

  • view

在这里插入图片描述

  • html

在这里插入图片描述

  • 效果

在这里插入图片描述

六、请求和响应案例:用户登录

注意GET和POST请求的区别

  • url

在这里插入图片描述

  • view

在这里插入图片描述

  • html

在这里插入图片描述

七、数据库操作

相较于MySQL数据库 + pymysql的复杂操作,Django提供了更便捷的ORM框架

1.安装第三方模块

  • 直接安装:pip install mysqlclient
  • 官网安装:

在这里插入图片描述

2.ORM框架操作表

步骤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',  # 数据库名字'USER': 'root','PASSWORD': 'root123','HOST': '127.0.0.1',  # 本台机器安装了MySQL'PORT': 3306,}
}

在这里插入图片描述

步骤3:类操作表

在models.py文件中操作表

  • 创建、新增、删除、修改直接在上面操作即可
  • 创建表

在这里插入图片描述

  • 等价于:
create table app01_userinfo(id bigint auto_increment primary key,name varchar(32),password varchar(64),age int
)
  • 最后还要执行命令:
python3.9 manage.py makemigrations
python3.9 manage.py migrate

在这里插入图片描述

注意

  • 在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
【设置默认值】age = models.IntegerField(default=2)【允许为空】data = models.IntegerField(null=True, blank=True)
  • 以后在开发中如果想要对表结构进行调整:在models.py文件中操作类即可。

  • 结束要执行命令:

 python3.9 manage.py makemigrationspython3.9 manage.py migrate

3.ORM框架操作数据

新建

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")

删除

UserInfo.objects.filter(id=3).delete()
Department.objects.all().delete()

获取

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)

更新

UserInfo.objects.all().update(password=999)
UserInfo.objects.filter(id=2).update(age=999)
UserInfo.objects.filter(name="朱虎飞").update(age=999)

八、案例:用户管理

功能1:展示用户

  • url增加info/list
from django.contrib import admin
from django.urls import path
from blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('index_app/', views.index_app),path('user_list/', views.user_list),path('tpl/', views.tpl),path('something/', views.something),path('login/', views.login),path('orm/', views.orm),path('info/list/', views.info_list)
]
  • view
from blog.models import UserInfo
...def info_list(request):data_list = UserInfo.objects.all()return render(request, "info_list.html", {"data_list": data_list})
  • info_list.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><table border="1"><thead><tr><th>ID</th><th>姓名</th><th>密码</th><th>年龄</th></tr></thead><tbody>{% for obj in data_list %}<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.age }}</td></tr>{% endfor %}</tbody></table>
</body>
</html>
  • 效果

请添加图片描述

功能2:添加用户

  • url增加info/add
from django.contrib import admin
from django.urls import path
from blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('index_app/', views.index_app),path('user_list/', views.user_list),path('tpl/', views.tpl),path('something/', views.something),path('login/', views.login),path('orm/', views.orm),path('info/list/', views.info_list),path('info/add/', views.info_add),
]
  • view
def info_add(request):if request.method == "GET":return render(request, 'info_add.html')# 获取用户提交的数据name = request.POST.get("name")password = request.POST.get("password")age = request.POST.get("age")# 添加到数据库UserInfo.objects.create(name=name, password=password, age=age)# 自动跳转return redirect("/info/list/")
  • info_add.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><form action="/info/add/" method="post">{% csrf_token %}<input type="text" name="name" placeholder="用户名"><input type="text" name="password" placeholder="密码"><input type="text" name="age" placeholder="年龄"><input type="submit" value="提交"></form>
</body>
</html>
  • 效果:点击“提交”可以跳转到展示

请添加图片描述
请添加图片描述

  • 在info/list页面增加"添加"按钮,修改info_list.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><a href="/info/add">添加</a><table border="1"><thead><tr><th>ID</th><th>姓名</th><th>密码</th><th>年龄</th></tr></thead><tbody>{% for obj in data_list %}<tr><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.age }}</td></tr>{% endfor %}</tbody></table>
</body>
</html>
  • 效果:点击"添加"后,即可跳转回添加页面

请添加图片描述

功能3:删除用户

  • url增加info/delete
from django.contrib import admin
from django.urls import path
from blog import viewsurlpatterns = [path('admin/', admin.site.urls),path('index_app/', views.index_app),path('user_list/', views.user_list),path('tpl/', views.tpl),path('something/', views.something),path('login/', views.login),path('orm/', views.orm),path('info/list/', views.info_list),path('info/add/', views.info_add),path('info/delete/', views.info_delete)
]
  • view
def info_delete(request):nid = request.GET.get("nid")UserInfo.objects.filter(id=nid).delete()return redirect("/info/list/")
  • info_delete.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</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><td>{{ obj.id }}</td><td>{{ obj.name }}</td><td>{{ obj.password }}</td><td>{{ obj.age }}</td><td><a href="/info/delete?nid={{ obj.id }}">删除</a></td></tr>{% endfor %}</tbody></table>
</body>
</html>
  • 效果:浏览器访问,点击"删除"即可将对应的行删除

请添加图片描述

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

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

相关文章

npm发布自己的插件包

发布npm包 新建文件目录例如npm-test&#xff0c;目录中打开命令行初始化package.json文件 npm init name&#xff1a;作为发布包的名字 version&#xff1a;版本号 main&#xff1a;入口文件名 {"name": "name202403311748","version": "…

Node爬虫:原理简介

在数字化时代&#xff0c;网络爬虫作为一种自动化收集和分析网络数据的技术&#xff0c;得到了广泛的应用。Node.js&#xff0c;以其异步I/O模型和事件驱动的特性&#xff0c;成为实现高效爬虫的理想选择。然而&#xff0c;爬虫在收集数据时&#xff0c;往往面临着诸如反爬虫机…

OSPF-基础、虚链路、overflow,缺省

OSPF 1、OSPF基础 2、区域内的路由计算 3、区域间的路由计算&#xff08;矢量&#xff09;&#xff08;区域间的防环原则&#xff09; 3.1、非骨干区域都与骨干区域相连。 3.2、骨干区域不会接收非骨干的3类LSA。 3.3、无论COST&#xff0c;1类LSA总是由于3类LSA。 ABR&…

如何读毛选

原因 这就涉及到mx该怎么读这个问题。拿起书来&#xff0c;凭着一股子热情&#xff0c;就一页页往下读可行吗&#xff1f;我想大概会半途而废&#xff0c;原因有二。 其一&#xff0c;mx中蕴含的思想是具有恒久价值的&#xff0c;但一定的思想必须通过一定的文字表达出来&#…

我爱我缓慢向上的勇气

勇气的觉醒 曾经&#xff0c;我也像许多人一样&#xff0c;害怕失败&#xff0c;害怕被人嘲笑&#xff0c;害怕面对困难。每当遇到挑战&#xff0c;我的内心就会充满恐惧和犹豫。但是&#xff0c;随着时间的推移&#xff0c;我逐渐意识到&#xff0c;这些恐惧和犹豫并不能帮助…

数据结构--稀疏数组

package com.dhu.sparsearray;public class SparseArrsy {public static void main(String[] args) {int chessArr1[][] new int[11][11];chessArr1[1][2] 1;chessArr1[2][3] 2;chessArr1[3][4] 11;System.out.printf("原始二维数组");for (int[] row : chessArr…

快消企业数字化转型实战解析:探寻未来增长新动力

2024年&#xff0c;快消行业正站在数字化转型的风口浪尖。 “今年是过去十年最差的一年&#xff0c;但却可能是未来十年最好的一年。”这句话几乎成为了今年的流行语。 但是这句话是情绪&#xff0c;不是事实。未来十年&#xff0c;中国会成为全球最大的消费品市场&#xff0…

[Pytorch]:PyTorch中张量乘法大全

在 PyTorch 中&#xff0c;有多种方法可以执行张量之间的乘法。这里列出了一些常见的乘法操作&#xff1a; 总结&#xff1a; 逐元素乘法&#xff1a;*ortorch.mul()矩阵乘法&#xff1a;ortorch.mm()ortorch.matmul()点积&#xff1a;torch.Tensor.dot()批量矩阵乘法&#xff…

北方经贸经济类知网收录月刊投稿发表论文

《北方经贸》期刊是由国家新闻出版总署批准&#xff0c;黑龙江省教育厅主管&#xff0c;黑龙江省经济管理干部学院主办的经济类综合期刊。期刊融理论性、知识性、实践性于一体&#xff0c;立足龙江&#xff0c;辐射全国&#xff0c;面向世界&#xff0c;注重研究解决重大现实理…

C++消息队列的基本实现

在C中&#xff0c;并没有直接提供消息队列&#xff08;Message Queue&#xff09;的标准库实现。但是&#xff0c;你可以使用std::queue与std::mutex&#xff08;或std::lock_guard&#xff09;、std::condition_variable等工具自己实现一个简单的线程安全消息队列。以下是一个…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式&#xff0c;本次实验使用的内网网段为192.168.198.0/24&#xff0c;kali的ip为192.168.198.172 信息搜集 ip主机扫描&#xff1a; nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描&#xff1a; nmap -T4 -A -v 192…

python基础——模块【模块的介绍,模块的导入,自定义模块,*和__all__,__name__和__main__】

&#x1f4dd;前言&#xff1a; 这篇文章主要讲解一下python基础中的关于模块的导入&#xff1a; 1&#xff0c;模块的介绍 2&#xff0c;模块的导入方式 3&#xff0c;自定义模块 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;C语言入门基…

嵌入式开发中,通过终端控制芯片GPIO电平

echo 204 > /sys/class/gpio/export 这个命令是在 Linux 系统中用于向 GPIO&#xff08;通用输入输出&#xff09;子系统注册一个 GPIO 引脚。GPIO 是一种用于与外部设备通信的通用硬件接口&#xff0c;可以通过读写 GPIO 引脚的状态来与外部设备进行通信&#xff0c;如传感…

大数据面试专题 -- kafka

1、什么是消息队列&#xff1f; 是一个用于存放数据的组件&#xff0c;用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景&#xff1f; 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka&#xff1f; kafka是一种基于订阅发布模式的…

通过SSH在苹果手机上查看系统文件:远程访问iOS文件系统的方法

​ 目录 引言 用户登录工具和连接设备 查看设备信息&#xff0c;电池信息 查看硬盘信息 硬件信息 查看 基带信息 销售信息 电脑可对手机应用程序批量操作 运行APP和查看APP日志 IPA包安装测试 注意事项 引言 苹果手机与安卓手机不同&#xff0c;无法直接访问系统文件…

python基于django协同算法的个性化音乐推荐系统的设计与实现

本个性化音乐推荐系统以Django作为框架&#xff0c;b/s模式以及MySql作为后台运行的数据库。本系统主要包括以下功能模块&#xff1a;首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;歌曲类型管理&#xff0c;明星歌手管理&#xff0c;歌曲音乐管理&#xff0c;歌曲…

权限提升技术:攻防实战与技巧

本次活动赠书1本&#xff0c;包邮到家。参与方式&#xff1a;点赞收藏文章即可。获奖者将以私信方式告知。 网络安全已经成为当今社会非常重要的话题&#xff0c;尤其是近几年来&#xff0c;我们目睹了越来越多的网络攻击事件&#xff0c;例如公民个人信息泄露&#xff0c;企业…

【Jenkins】关于账号,证书验证的设置问题

当你的电脑启动了Jenkins&#xff0c;这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins&#xff0c;这时候一定要小心更改管理员账号和密码~~~ 当你的电脑启动了Jenkins&#xff0c;这时候一定要小心更改管理员账号和密码~~~ 重要的事情说3遍&#xff0c;如…

阿里云数据库服务器价格表查询_一张表精准报价

阿里云数据库服务器价格表&#xff0c;优惠99元一年起&#xff0c;ECS云服务器2核2G、3M固定带宽、40G ESSD Entry云盘&#xff0c;优惠价格99元一年&#xff1b;阿里云数据库MySQL版2核2G基础系列经济版99元1年、2核4GB 227.99元1年&#xff0c;云数据库PostgreSQL、SQL Serve…

财经界投稿发表论文知网收录

《财经界》是由国家新闻出版总署批准、国家发展计划委员会主管、国家信息中心主办的正规国家级经济类期刊。本刊为大型财经刊物&#xff0c;旨在介绍国家宏观经济政策、经济环境、经济信息和分析经济热点问题。杂志面向各级政府决策层、财经高管人员、研究机构的专家学者、资本…