01.Django入门

1.创建项目

1.1基于终端创建Django项目

  • 打开终端
  • 进入文件路径(打算将项目放在哪个目录,就进入哪个目录)

E:\learning\python\Django

  • 执行命令创建项目

F:\Anaconda3\envs\pythonWeb\Scripts\django-admin.exe(Django-admin.exe所在路径) startproject 项目名称

如果所在环境的Scripts已经加入环境变量了,可以直接在终端写:

django-admin startproject 项目名称

eg:创建项目名为MySite的命令:
F:\Anaconda3\envs\pythonWeb\Scripts\django-admin.exe startproject MySite

1.2 基于Pycharm创建Django项目

1.新建项目,选择Django,选择项目所在位置和解释器,然后点击“创建”:

在这里插入图片描述

说明:

  • 通过终端的命令行,创建的项目,是比较标准的

  • 通过pycharm创建的项目,在么标准的基础上默认加了:

    • 创建了一个templates目录【删除】

    • Pycaharm在setting.py中的TEMPLATES配置项中添加了如右图所示部分(Pycharm加这个的意思是:找模板就去外层的templates目录找)【删除】

在这里插入图片描述

2.默认项目结构介绍

MySite
├─MySite
│  └─asgi.py 【异步式的接收网络请求】【默认不动】
│  └─wsgi.py【同步式的接收网络请求】【默认不动】
│  └─settings.py 【项目的配置文件:链接数据库,注册APP】【经常修改的文件】
│  └─urls.py 【URL和函数的对应关系】【经常修改的文件】
│  └─__init__.py
└─manage.py 【项目的管理:启动项目、创建app、数据管理】【默认不动,经常使用】

注意:使用tree命令显示不完全的原因: tree /f

3.APP

总项目

  • app,用户管理【独立的表结构、函数、HTML母版、CSS】
  • app,订单管理 【独立的表结构、函数、HTML母版、CSS】
  • app,后台管理 【独立的表结构、函数、HTML母版、CSS】
  • app,API 【独立的表结构、函数、HTML母版、CSS】

注意:我们在起初刚开始的时候,项目简单,开发简洁,用不到多APP,一般情况下只创建1个APP即可

3.1 APP 的创建

打开Command Prompt终端,在终端输入:

python maneage.py startapp app名

E:.                 
│  manage.py        
│                  
├─app01
│  │  admin.py 【默认不用动,Django默认提供了admin后台管理】
│  │  apps.py 【默认不用动,app的启动类】 
│  │  models.py 【重要,对数据库进行操作的】
│  │  tests.py【默认不动。用来做单元测试的】
│  │  views.py 【重要,定义url对应的视图函数】
│  │  __init__.py
│  │
│  └─migrations 【默认不用动,它是Django的module对数据库字段进行修改的时候,用来做记录的】
│          __init__.py
│
└─MySite│  asgi.py│  settings.py│  urls.py│  wsgi.py│  __init__.py│└─__pycache__settings.cpython-39.pyc__init__.cpython-39.pyc

4.Django快速上手

4.1打通基础数据流

注意:在运行Django程序之前,确保APP已注册

步骤:
1.在app01中的apps.py中找到App01Config,然后在settings.py中的INSTALLED_APPS项写入:‘app01.apps.App01Config’

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01.apps.App01Config'#注册APP01
]

2.在urls.py中编写URL和视图函数对应关系

在MySite中的urls.py中先引入app01中的views.py中视图函数,再将函数和URL对应声明

在这里插入图片描述

  1. views.py中编写视图函数:

在这里插入图片描述

  1. 启动Django项目:

    • 通过命令行启动:

      python manage.py runserver

    • Pycharm启动:可以编辑配置之后,点击播放按钮启动

在这里插入图片描述

	这样项目基本数据流向就跑通了

4.2 templates 模板

注意:

  1. 优先去项目根目录的template中寻找【要提前在settings.py中配置DIRS
  2. 如果哦没找到,再根据app的注册顺序,在每个app下的templates目录去找

在这里插入图片描述

4.2.1 Django模板语法

(1)本质:在HTML中写一些占位符,由数据对占位符进行替换和处理。模板语法的原理如下图所示:

在这里插入图片描述

注意:

整个过程render 的内部:

1.读取含有模板语法的HTML文件

2.内部进行渲染(模板语法执行并替换数据),最终只得到含有HTML标签的字符串

3.将渲染(替换)完成的字符串返回给用户浏览器

(2)模板语法演示:

views.py中对应的处理函数部分:

def usetemp(request):# 变量name = '小明'# 列表arr = ['小红', '小兰', '小白']# 字典dic = {'name': '小明', 'age': 18, 'address': '北京'}# 列表套字典lic = [{'name': '小兰', 'age': 18, 'address': '上海'},{'name': '小红', 'age': 18, 'address': '天津'},{'name': '小白', 'age': 18, 'address': '广东'}]return render(request, 'usetemp.html',{'name': name,'friends': arr,'userinfo': dic,'friends_info': lic})

带有模板语法的usetemp.html代码:

<body>
<h1>变量</h1>
<span>{{ name }}</span>
<h1>数组</h1>
<ul><li>{{ friends.0 }}</li><li>{{ friends.1 }}</li><li>{{ friends.2 }}</li>
</ul>
<ul>{% for item in friends %}<li>{{ item }}</li>{% endfor %}
</ul>
<h1>字典</h1>
<span>{{ userinfo.name }}</span>
<span>{{ userinfo.age }}</span>
<span>{{ userinfo.address }}</span>
<span>遍历字典索引</span>
<ul>{% for index in userinfo.keys %}<li> {{ index }}</li>{% endfor %}</ul>
<span> 遍历字典值</span>
<ul>{% for value in userinfo.values %}<li>{{ value }}</li>{% endfor %}</ul>
<span>循环字典的每一项</span>
<ul>{% for key,value in userinfo.items %}<li>{{ key  }} = {{ value }}</li>{% endfor %}</ul>
<span>{{ friends_info.0 }}</span>
<br/>
<span>{{ friends_info.0.name }}</span>
<h1>条件语句</h1>
{% for item in friends_info %}{% if item.name == '小芳' %}<span> 小芳:{{ item.age }}</span>{% elif item.name == '小红'%}<span>小红年龄:{{ item.age }}</span>{% else %}<span> 没有符合条件的用户</span>{% endif %}
{% endfor %}</body>

4.3 静态文件

在开发过程中一般将:

  • 图片
  • CSS
  • JS

都会被当做静态文件处理。

静态文件在Django项目中,步骤:

  1. 先在app的目录下创建static 文件夹,如static/img,js,css,plugins

2.在Django中所有静态资源的引入:

{% load static %}

使用的路径写法:{% static 'img/1.jpeg' %}

5.请求和响应

常见的请求和响应

request是一个对象,封装了用户发过来的所有数据

    # 1.获取请求方式get/POSTprint(request.method)# 2.获取咋URL上传递的参数值,print(request.GET['a'])# 3.post请求会在请求体中传递数据print(request.POST)# 4.【响应】HttpResponse("OK"):将字符串的内容返回给请求者# return HttpResponse('OK')# 5.【响应】render:读取HTML文件的内容,再进行渲染(替换),生成新的字符串,返回给用户的浏览器# return render(request, 'req.html')# 6.【响应】redirect:强制浏览器重定向return redirect('https://www.baidu.com')

注:

在使用表单提交数据时,会触发Django的安全机制,只需要在form标签开头加入:{% csrf_token %}

<form method="POST" action="login">{% csrf_token %}
</form>

在这里插入图片描述

6.数据库操作

MySql+pymysql

import pymysql
#1.连接MysQL
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',passwd="root123", charset='utf8', db=' unicom ' )
cursor = conn.cursor (cursor=pymysql.cursors.Dictcursor)
#2.发送指令
cursor.execute( "insert into admin(username , password,mobile)values('wupeiqi' , 'qwe123','15155555555')")
conn.commit( )
#3.关闭
cursor.close( )
conn.close()

在Django中一般不直接通过pymysql操作MySQL,太繁琐了。Django为我们提供了ORM框架

在这里插入图片描述

6.1 安装ORM要用的第三方模块

pip install mysqlclient

6.2 ORM

ORM 的作用:

  • 创建和增删改查数据库中的表(不用写SQL语句)【注意:无法创建数据库】
  • 操作表中的数据

ORM连接MySQL的步骤:

  1. 创建数据库,启动MySQL,创建数据库

CREATE DATABASE CHARACTER SET utf8;

  1. 在settings.py中进行配置和修改
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'XXX',  # 数据库名字'USER': 'root','PASSWORD': 'XXX','HOST': '127.0.0.1',  # 要连接哪台机器上的MySQL'PORT': '3306'  # 端口号}
}

6.3. 基于Django去操作表:

6.3.1 创建表

1.在app下的models.py中编辑:

from django.db import modelsclass UserInfo(models):name = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField()

2.在终端运行命令:

python manage.py makemigrations
python manage.py migrate

注意:在运行命令之前,确保APP已经提前注册

6.3.2 修改表

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

  • 选择:1,那么就手动输入值
  • 选择:2,那么放弃新增列(应该在新增列中设置默认值)
# 设置默认值
address = models.CharField(default='XXX街道XXX号')
# 允许为空
data = models.IntegerField(null=True, blank=True)

注意:

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

  • 在models.py文件中操作类即可
  • 数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

6.3.3对表字段的增删改查

# 1.新建数据
# models.Department.objects.create(title='活动', segment='销售部')
# models.UserInfo.objects.create(name='xijing', password='123456', age=18)# 2.删除数据
# 删掉UserInfo里面id=2的记录
# models.UserInfo.objects.filter(id=2).delete()
# 删掉Departemt里面的所有记录
# models.Department.objects.all().delete()# 3.查数据
#queryset = models.UserInfo.objects.all()
# 得到的是一个列表
# for item in queryset:
#     print(item.name,item.age,item.password)
# 获取id=5的数据
# row_data = models.UserInfo.objects.filter(id=5).first()
# print(row_data)# 4.更新数据
# 将UserInfo表里面所有数据的密码字段全都更新成999
# models.UserInfo.objects.all().update(password='9999')
# 筛选条件
models.UserInfo.objects.filter(id=5).update(password='123456')

7.案列展示流程

7.1展示用户列表

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

7.2添加用户信息

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

7.3删除用户

  • url
  • 函数
    • http://127.0.0.1:8000/info/delet?id=5
    • def handlefunc(request):
      id = request.GET.get(‘id’)
      module.UserInfo.obejects.filter(id=5).delete()
      ects.all().update(password=‘9999’)

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

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

相关文章

RK3588平台开发系列讲解(AI 篇)RKNN-Toolkit2 API 介绍

文章目录 一、RKNN 初始化及对象释放二、RKNN 模型配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要讲解 RKNN-Toolkit2 API 详细说明。 一、RKNN 初始化及对象释放 在使用 RKNN Toolkit2 的所有 API 接口时,都需要先调用 RKNN()方法初始化 RKNN 对象,…

使用Nodejs搭建简单的HTTP服务器 - 内网穿透公网远程访问

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址&#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&…

“车-路-网”电动汽车充电负荷时空分布预测(matlab)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考《基于动态交通信息的电动汽车充电负荷时空分布预测》和《基于动态交通信息的电动汽车充电需求预测模型及其对配网的影响分析》文献模型&#xff0c;考虑私家车、出租车和共用车三类交通工具特性和…

Python支持下最新Noah-MP陆面模式站点、区域模拟及可视化分析技术

查看原文>>> Python支持下最新Noah-MP陆面模式站点、区域模拟及可视化分析技术 熟悉陆表过程的主要研究内容以及陆面模型在生态水文研究中的地位和作用&#xff1b;深入理解Noah-MP 5.0模型的原理&#xff0c;掌握Noah-MP模型&#xff08;2023年最新发布的5.0版本&am…

Android 查看签名文件的MD5 SHA1值

1.找到存放签名文件所在的文件夹 2.输入命令&#xff1a;keytool -list -v -keystore atui.jks 3.输入口令&#xff08;keystore.jks签名文件的密码&#xff09;

U盘被分成了4个盘要怎么合并

原来是做为系统盘的&#xff0c;然后有一大概小半年没用&#xff0c;今天一看它自己分成了四个盘。 并且我一插入电脑就提示我格式化 其实根本不需要任何工具&#xff0c;操作前最好把U盘数据备份一下 首先把你的U盘插在电脑上 方法一 U盘被分成四个分区的原因有以下几种可…

第二届人工智能与智能信息处理技术国际学术会议(AIIIP 2023)

第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xff09; 2023 2nd International Conference on Artificial Intelligence and Intelligent Information Processing 第二届人工智能与智能信息处理技术国际学术会议&#xff08;AIIIP 2023&#xf…

Seaborn数据可视化(二)

目录 1.Seaborn风格设置 1.1 主题设置 1.2 轴线设置 1.3 移除轴线 1.4 使用字典传递函数 2.设置绘图元素比例 2.1 设置绘图元素比例paper 2.2 设置绘图元素比例poster 2.3 设置绘图元素比例notebook Seaborn将Matplotlib的参数划分为两个独立的组合&#xff0c;第一组用于…

【ARM AMBA AXI 入门 10 - AXI 总线 DATA信号与 STRB 信号之间的关系 】

文章目录 AXI STRB 信号 AXI STRB 信号 AXI总线是ARM公司设计的高性能处理器接口&#xff0c;其中STRB和DATA信号在AXI协议中有特殊的含义和关系。 DATA信号&#xff1a;在AXI中&#xff0c;DATA信号用于在读写操作中传输实际的数据。数据的大小可以根据AXI接口的位宽来变化&…

HTTP与RPC的取舍

HTTP与RPC的取舍 HTTP和RPC都是常用的网络通信协议&#xff0c;它们各有优劣。选择何种协议&#xff0c;主要取决于应用的需求和场景。 HTTP和RPC都有各自的优点和缺点&#xff0c;首先我们对两种协议进行一个总结。 HTTP协议图 HTTP的优点&#xff1a; 广泛的支持&#xff1…

Unity 之 Transform.Translate 实现局部坐标系中进行平移操作的方法

文章目录 Translate 默认使用局部坐标也可以转换成世界坐标 Translate 默认使用局部坐标 在Unity中&#xff0c;Transform.Translate是用于在游戏对象的局部坐标系中进行平移操作的方法。这意味着它将游戏对象沿着其自身的轴进行移动&#xff0c;而不是世界坐标轴。这在实现物…

leetcode 118.杨辉三角

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/pascals-triangle/description/ 代码&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…

C++图形界面编程-MFC

C控制台程序是命令行黑框&#xff0c;如果要写一个图形界面&#xff0c;VS也提供了图形界面编程MFC。建项目的时候选如下选项&#xff1a; 类似于QT。 问&#xff1a;那么MFC项目的运行入口main()或WinMain()在哪里呢&#xff1f; 答&#xff1a;其实&#xff0c;在MFC应用程…

FPGA原理与结构——FIFO IP核原理学习

一、FIFO概述 1、FIFO的定义 FIFO是英文First-In-First-Out的缩写&#xff0c;是一种先入先出的数据缓冲器&#xff0c;与一般的存储器的区别在于没有地址线&#xff0c; 使用起来简单&#xff0c;缺点是只能顺序读写数据&#xff0c;其数据地址由内部读写指针自动加1完成&…

第8章 海量数据搜索实现

mini商城第8章 海量数据搜索实现 一、课题 海量数据搜索 二、回顾 1、理解OpenResty 百万并发站点架构 2、能明白多级缓存架构思路 3、实现Nginx代理缓存 4、能实现缓存一致性 三、目标 1、了解ElasticSearch并会使用核心API 2、基于Canal实现ES和数据库数据同步 3、…

上篇——税收大数据应用研究

财税是国家治理的基础和重要支柱&#xff0c;税收是国家治理体系的重要组成部分。我们如何利用税收数据深入挖掘包含的数据价值&#xff0c;在进行数据分析&#xff0c;提升税收治理效能&#xff0c;推进税收现代化。 1. 定义与特点 对于“大数据”&#xff08;Big data&#…

『PyQt5-基础篇』| 02 Pyqt5开发环境+安装配置QtDesigner

02 Pyqt5开发环境安装配置QtDesigner 1 Pycharm安装2 Python安装3 Pip安装4 PyQt5安装5 Pycharm中编译工具设置及pyqt5包的导入6 指定Qt Designer7 指定PyUIC58 指定PyRcc59 PyInstaller安装10 查看是否配置OK 1 Pycharm安装 安装教程请参考&#xff1a;安装教程 2 Python安装…

酷开科技大屏营销,锁定目标人群助力营销投放

近日&#xff0c;中科网联发布《2023年中国家庭大屏白皮书》&#xff0c;数据显示智能电视近三年内使用人群增长平稳。全国4.94亿家庭户中&#xff0c;智能大屏渗透率近九成。不仅如此&#xff0c; CCData研究预测&#xff0c;2025年中国智能电视渗透率将达到95%以上。这与三年…

让智慧城市更进一步,无人机解决方案全面应用

在城市规划中&#xff0c;无人机正在颠覆传统的操作和思维方式。这种技术不仅改变了城市管理获取和分析信息的方式&#xff0c;还提供了前所未有的视角&#xff0c;使城市管理能够更加明智地制定策略。 1. 数据采集的新纪元&#xff1a; 城市规划的核心在于数据的收集和分析。…

matlab面向对象

一、面向对象编程 1.1 面向过程与面向对象 区别&#xff1a; 面向过程的核心是一系列函数&#xff0c;执行过程是依次使用每个函数面向对象的核心是对象&#xff08;类&#xff09;及其属性、方法&#xff0c;每个对象根据需求执行自己的方法以解决问题 对象&#xff1a;单个…