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.rhkb.cn/news/98515.html

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

相关文章

残差网络实现

代码中涉及的图片实验数据下载地址&#xff1a;https://download.csdn.net/download/m0_37567738/88235543?spm1001.2014.3001.5501 代码&#xff1a; import torch import torch.nn as nn import torch.nn.functional as F #from utils import load_data,get_accur,train i…

茂名 湛江阳江某学校 ibm x3850服务器维修经历

简介&#xff1a;中国广东省阳江市某中学联想 IBM System x3850 x6服务器维修 io板故障处理经历分享&#xff1a; 这一天一位阳江的老师经其他学校老师介绍推荐对接我&#xff0c;说他们学校有一台ibm服务器出问题了&#xff0c;老师大致跟我描述了一下这台服务器发生故障的前…

Android12之com.android.media.swcodec无法生成apex问题(一百六十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Apache DolphinScheduler 支持使用 OceanBase 作为元数据库啦!

DolphinScheduler是一个开源的分布式任务调度系统&#xff0c;拥有分布式架构、多任务类型、可视化操作、分布式调度和高可用等特性&#xff0c;适用于大规模分布式任务调度的场景。目前DolphinScheduler支持的元数据库有Mysql、PostgreSQL、H2&#xff0c;如果在业务中需要更好…

iOS UIAlertController控件

ios 9 以后 UIAlertController取代UIAlertView和UIActionSheet UIAlertControllerStyleAlert和UIAlertControllerStyleActionSheet。 在UIAlertController中添加按钮和关联输入框 UIAlertAction共有三种类型&#xff0c;默认&#xff08;UIAlertActionStyleDefault&#xff0…

【Linux】进程信号篇Ⅰ:信号的产生(signal、kill、raise、abort、alarm)、信号的保存(core dump)

文章目录 一、 signal 函数&#xff1a;用户自定义捕捉信号二、信号的产生1. 通过中断按键产生信号2. 调用系统函数向进程发信号2.1 kill 函数&#xff1a;给任意进程发送任意信号2.2 raise 函数&#xff1a;给调用进程发送任意信号2.3 abort 函数&#xff1a;给调用进程发送 6…

机器学习深度学习——NLP实战(情感分析模型——数据集)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位即将上大四&#xff0c;正专攻机器学习的保研er &#x1f30c;上期文章&#xff1a;机器学习&&深度学习——BERT&#xff08;来自transformer的双向编码器表示&#xff09; &#x1f4da;订阅专栏&#xff1a;机器…

Kubernetes 安全机制 认证 授权 准入控制

客户端应用若想发送请求到 apiserver 操作管理K8S资源对象&#xff0c;需要先通过三关安全验证 认证&#xff08;Authentication&#xff09;鉴权&#xff08;Authorization&#xff09;准入控制&#xff08;Admission Control&#xff09; Kubernetes 作为一个分布式集群的管理…

Flink的Standalone部署实战

在Flink是通用的框架&#xff0c;以混合和匹配的方式支持部署不同场景&#xff0c;而Standalone单机部署方便快速部署&#xff0c;记录本地部署过程&#xff0c;方便备查。 环境要求 1&#xff09;JDK1.8及以上 2&#xff09;flink-1.14.3 3&#xff09;CentOS7 Flink相关信…

ELK日志监控系统搭建docker版

目录 日志来源elk介绍elasticsearch介绍logstash介绍kibana介绍 部署elasticsearch拉取镜像&#xff1a;docker pull elasticsearch:7.17.9修改配置⽂件&#xff1a;/usr/share/elasticsearch/config/elasticsearch.yml启动容器设置密码&#xff08;123456&#xff09;忘记密码…

opencv-进阶05 手写数字识别原理及示例

前面我们仅仅取了两个特征维度进行说明。在实际应用中&#xff0c;可能存在着更多特征维度需要计算。 下面以手写数字识别为例进行简单的介绍。 假设我们要让程序识别图 20-2 中上方的数字&#xff08;当然&#xff0c;你一眼就知道是“8”&#xff0c;但是现在要让计算机识别…

【JUC系列-01】深入理解JMM内存模型的底层实现原理

一&#xff0c;深入理解JMM内存模型 1&#xff0c;什么是可见性 在谈jmm的内存模型之前&#xff0c;先了解一下并发并发编程的三大特性&#xff0c;分别是&#xff1a;可见性&#xff0c;原子性&#xff0c;有序性。可见性指的就是当一个线程修改某个变量的值之后&#xff0c…

自动化测试用例设计实例

在编写用例之间&#xff0c;笔者再次强调几点编写自动化测试用例的原则&#xff1a; 1、一个脚本是一个完整的场景&#xff0c;从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点&#xff0c;不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

智慧水利利用4G物联网技术实现远程监测、控制、管理

智慧水利工业路由器是集合数据采集、实时监控、远程管理的4G物联网通讯设备&#xff0c;能够让传统水利系统实现智能化的实时监控和远程管理。工业路由器利用4G无线网络技术&#xff0c;能够实时传输数据和终端信息&#xff0c;为水利系统的运维提供有效的支持。 智慧水利系统是…

湘潭大学 湘大 XTU OJ 1055 整数分类 题解(非常详细)

链接 整数分类 题目 Description 按照下面方法对整数x进行分类&#xff1a;如果x是一个个位数&#xff0c;则x属于x类&#xff1b;否则将x的各位上的数码累加&#xff0c;得到一个新的x&#xff0c;依次迭代&#xff0c;可以得到x的所属类。比如说24&#xff0c;246&#…

手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换

实现Tomcat和Jetty的切换 前言 上一篇文章我们聊到&#xff0c;SpringBoot中内置了web服务器&#xff0c;包括Tomcat、Jetty&#xff0c;并且实现了SpringBoot启动Tomcat的流程。 那么SpringBoot怎样自动切换成Jetty服务器呢&#xff1f; 接下来我们继续学习如何实现Tomcat…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题&#x1f43e; 一、为什么关闭连接的需要四次挥⼿&#xff0c;⽽建⽴连接却只要三次握⼿呢&#xff1f;&#x1f3ed; 二、为什么连接建⽴的时候是三次握⼿&#xff0c;可以改成两次握⼿吗&#xff1f;&#x1f463; 三、为什么主动断开⽅在TIME-WAIT状态…

服务器感染了.360勒索病毒,如何确保数据文件完整恢复?

引言&#xff1a; 随着科技的不断进步&#xff0c;互联网的普及以及数字化生活的发展&#xff0c;网络安全问题也逐渐成为一个全球性的难题。其中&#xff0c;勒索病毒作为一种危害性极高的恶意软件&#xff0c;在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒&a…

Git分布式版本控制系统

目录 2、安装git 2.1 初始环境 2.2 Yum安装Git 2.3 编译安装 2.4 初次运行 Git 前的配置 2.5 初始化及获取 Git 仓库 2.6 Git命令常规操作 2.6.2 添加新文件 2.6.3 删除git内的文件 2.6.4 重命名暂存区数据 2.6.5 查看历史记录 2.6.6 还原历史数据 2.6.7 还原未来…

[机器学习]特征工程:主成分分析

目录 主成分分析 1、简介 2、帮助理解 3、API调用 4、案例 本文介绍主成分分析的概述以及python如何实现算法&#xff0c;关于主成分分析算法数学原理讲解的文章&#xff0c;请看这一篇&#xff1a; 探究主成分分析方法数学原理_逐梦苍穹的博客-CSDN博客https://blog.csdn.…