day53 django的三板斧与配置模块

昨日内容回顾

web应用程序
主要是因为接下来学习的Django框架主要就是用来开发web应用的
​
web应用它是一款B/S架构的软件,只需要一个浏览器作为我们的客户端,我们自己写个服务端就行了
# 它的优点
1. 它只需要一个浏览器即可,无需安装其他的软件
2. 一定程度上节省了内存空间
3. 它的跨平台性(Windows、macOS、Linux等)
​
# 它的缺点:
"""它的依赖性比较强,依赖服务端,一旦服务端出现宕机的情况,客户端就会立马首影响"""
​
# 什么是框架
在别人写好的代码基础上,在固定的位置去写代码.
bin
core
conf
​
## 面试经常问的就是框架的源码
你看过Django的哪些源码? 请举例说明。
手写web框架
目的不是让你掌握其中的代码重点在于思路的理解,逻辑的理解等
​
## 代码就省略
"""根据功能的不同,进行了目录的划分"""
views.py:以后写核心的业务逻辑就在这个里面写,写了一堆的函数
urls.py:写后缀(路由)与视图函数的对应关系,也称为是路由文件
template:存放HTML文件(在Django中html文件我们称为是模板文件------>模板语法)
入口文件: 书写socket部分,处理HTTP格式的数据,做数据的切分等操作
​
# 自己写的socket部分就比较麻烦
wsgiref模块
它解决的事情:1. 帮我们写了socket部分,我们以后就不用在写了2. 帮我们处理了HTTP格式的数据,最终处理成一个大的字典env, 里面也包含了请求的各个数据3. 它能够处理一些高并发问题,它的并发量不是很高,上线要把wsgiref换成uwsgi服务器(并发量高)
​
from wsgiref.simple import make_server
def run(env, response):pass
​
​
server=make_server(host, port, app=run)
server.server_forever() # 把服务端起起来
Django框架的学习
它是Python中一个核心框架,当然它也有别的框架
​
# 版本问题:
Django1.x  Django2.x  Django3.x  Django4.x(忽略)
​
# 安装
pip install django==2.1.1
​
# 创建项目
1. 命令行django-admin startpeoject 项目名称2. pycharm创建FileNew Projectdjango。。。# 如何启动项目
1. 命令行启动
python manage.py runserver
python manage.py runserver 127.0.0.1 8001
python manage.py runserver  8002
2. pycharm启动
​
## 得到一个欢迎页
创建应用
"""应用就是一个独立的功能模块,一定别忘了注册应用,在配置文件中注册"""
命令行创建:python3 manage.py startapp 应用名# 应用名要见名知意: app01 app02 app03  user order address
# 框架中至少要有一个应用
"""注册应用!!!!!!!"""

今日内容概要

以登录功能为例,从大体上来了解django的知识点,后续还会详细的讲解每一部分的知识点
  • 三板斧的使用

  • 全局配置文件

  • 静态文件的配置

  • request对象的几个方法

  • pycharm链接数据库MySQL

  • Django链接数据库MySQL

  • ORM的使用

  • ORM的增删改查

今日内容详细

三板斧的使用
三个方法:
HttpResponse 
render
redirect
​
def index(request):print('request')# return HttpResponse("request") # 它返回的是字符串# return render(request, 'index.html') # 加载HTML页面的# return redirect('http://www.baidu.com') # 加载HTML页面的return redirect('/home/') # 重定向的
全局配置文件
LANGUAGE_CODE = 'zh-hans'
​
TIME_ZONE = 'Asia/Shanghai'
​
USE_I18N = True
​
USE_L10N = True
​
USE_TZ = False
​
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
}
​
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware', ------ 这个可以注释掉,用于增加安全性的'django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
​
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','app01.apps.App01Config', # 这是全写
]
静态文件的配置
静态文件: 类似于HTML文件类似于CSS文件类似于js文件图片第三方的前端框架(jQuery、bootstrap)...# 直接拿来就使用的都是静态文件的# 静态文件存在Django框架的哪个位置?
"""我们一般把静态文件放在框架下的static文件夹,但是,默认情况下没有这个文件夹,因此,需要我们手动创建出来这个文件夹static静态的html一般放在templaes文件夹下面
"""
​
# 我们一般还会在static文件夹下进一步的划分目录
css
js
img
...
/index
/home
​
"""我们访问不到一个地址,是因为在Django里面没有开设这样一个地址,Django帮你加了,你只需要按照我的规则添加即可"""
http://127.0.0.1:8000/static/bootstrap-3.4.1-dist/css/bootstrap.min.css
​
{%  %}  # 一般写跟逻辑相关的
{{  }}  # 跟变量相关的## 动态解析
{% load static %}
​
<script src="{% static 'js/jquery_3.7.1_jquery.min.js' %}"></script>
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
​
​
"""这个配置是访问静态文件的令牌"""
STATIC_URL = '/dasdasdasdas/'
​
"""其实就是static文件夹的路径"""
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),os.path.join(BASE_DIR, 'static1'),os.path.join(BASE_DIR, 'static2')
]
request对象的方法
<form action="" method="post">
action:1. 不写,朝当前地址提交2. 全写3. 只写后缀# post提交表单,前期先把下面的代码注释掉
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
​
print(request.GET)
print(request.GET.get('a'))
print(request.GET.get('b'))
print(request.GET.get('c'))
print(request.GET.getlist('c'))
​
# print(request.POST) # 获取以post请求方式提交的表单数据
# print(request.POST.get('username')) # kevin 获取以post请求方式提交的表单数据
# print(request.POST.get('password')) # 123 获取以post请求方式提交的表单数据
"""get获取默认拿到的是最后一个元素值"""
# print(request.POST.get('hobby')) # 3 获取以post请求方式提交的表单数据
# ['a', 'b', 'c']
username = request.POST.get('username')
password = request.POST.get('password')
print(request.POST.getlist('hobby')) # 3 获取以post请求方式提交的表单数据
​
request.method == 'POST':
pycharm链接数据库
django链接数据库
配置完链接数据的代码之后,Django默认启动不起来了,原因是:内部使用的链接模块用的是mysqldb
我们不使用这个模块,我们使用pymysql模块
​
# 如何更换pymysql
在任意的__init__.py文件中添加一下代码
import pymysql
pymysql.install_as_MySQLdb()
​
# 后续还有一个模块:mysqlclient,这个模块不需要加任何的代码
这个模块一般装不上,不容易装上,很容易报错
orm介绍
orm: 对象映射模型
在Django中操作数据库就不用在写原生的SQL语句,而是使用面向对象的语法和一些方法来操作数据库
缺点:代码的封装程度太高,导致的问题:执行效率下降了,目前可以忽略,需要自己写原生SQL语句
​
类名                  >>>             表名
对象                  >>>             一条记录
属性                  >>>             一个字段
​
## 我们的这些orm在哪里书写呢?
models.py这个文件就是跟数据库打交道的
​
## 类名写好之后,一定别忘了做数据库迁移命令
***************************************************************************************
python38 manage.py makemigrations  # 生成迁移的记录(类似以是一个小本本)
python38 manage.py migrate        # 这句话才是真正的操作了数据库,然后生成表
"""当你修改了跟数据量相关的代码之后,都要执行这两句话"""
***************************************************************************************

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

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

相关文章

单向循环代码实现cpp

// 单向循环链表 class CircleLink { public:CircleLink(){head_ new Node();tail_ head_;head_->next_ head_;}~CircleLink(){Node* p head_->next_;while (p ! head_){head_->next_ p->next_;delete p;p head_->next_;}delete head_;}public:// 尾插法 …

【不正经操作】百度深度学习框架paddlepaddle本地运行-Python环境配置笔记

百度深度学习框架PaddlePaddle 百度深度学习框架PaddlePaddle是一个支持深度学习和机器学习的开源框架。它由百度公司于2016年开发并发布&#xff0c;现在已经成为中国最受欢迎的深度学习框架之一&#xff0c;并且在国际上也获得了不少关注。 特点与功能 易于使用 PaddlePa…

ARMday01(计算机理论、ARM理论)

计算机理论 计算机组成 输入设备、输出设备、运算器、控制器、存储器 1.输入设备&#xff1a;将编写好的软件代码以及相关的数据输送到计算机中&#xff0c;转换成计算机能够识别、处理和存储的数据形式 键盘、鼠标、手柄、扫描仪、 2.输出设备&#xff1a;将计算机处理好的数…

百文买鸡和水仙花数问题(C#解法)

百文买鸡题目&#xff1a; ⽤100⽂买⼀百只鸡&#xff0c;其中公鸡&#xff0c;⺟鸡&#xff0c;⼩鸡&#xff0c;都必须要有&#xff0c;公鸡3⽂⼀只&#xff0c;⺟鸡5⽂⼀只&#xff0c;⼩鸡2⽂⼀只&#xff0c;请问公鸡、⺟鸡、⼩鸡要买多少只刚好凑⾜100⽂。 // x y z 公鸡…

解决 github.com 或者 raw.githubusercontent.com 打开慢、打不开问题

系列文章目录 文章目录 系列文章目录前言一、Windows 系统1.1 以管理员身份运行记事本1.2 打开 hosts 文件1.3 写入 IP 地址 二、Linux2.1 hosts 文件位置 三、Android 系统总结 前言 连接手机热点&#xff0c;将流量关闭马上打开&#xff0c;进入的成功率更高 一、Windows 系…

Netty入门指南之NIO 粘包与半包

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Netty应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言问题产…

NOIP2023模拟13联测34 abstract

题目大意 有一棵有 n n n个点的树&#xff0c;每个点有一个点权 a i a_i ai​&#xff0c; f ( i , j ) f(i,j) f(i,j)和 g ( i , j ) g(i,j) g(i,j)分别表示 i i i到 j j j的路径上的权值与和权值或&#xff0c;求 ∑ i 1 n ∑ j i n f ( i , j ) g ( i , j ) \sum\limits_…

flutter开发实战-TweenSequence实现动画序列

flutter开发实战-TweenSequence实现动画序列 一、TweenSequence TweenSequence是允许创建一个Animation由一系列补间动画来确定值&#xff0c;每个TweenSequenceItem都有定义在动画的持续时间的权重确定动画间隔。 TweenSequence 动画组类TweenSequenceItem 用来定义每一个动…

深度学习读取txt训练数据绘制参数曲线图的方法

有一些深度学习模型是并不像yolo系列那样最终输出相应的参数图&#xff0c;有很多训练形成了一个训练log文件&#xff0c;于是需要读取log文件中的内容并绘制成曲线图。 如下实例&#xff0c;有一个log文件的部分截图&#xff0c;需要将其读取出来并绘制曲线图 废话不多说&…

前端之Bootstrap框架

目录 【一】Bootstrap介绍 【二】Bootstrap引入 【1】CDN加速链接 【2】注意 【三】布局容器 【四】栅格系统 【五】栅格参数 【六】列偏移 【七】排版 标题 内联文本元素 对齐 改变大小写 引用 列表 【八】表格 基本实例 条纹状表格 带边框的表格 鼠标悬停…

汽车工业生产线数字孪生可视化管理平台,赋予工厂车间数字化智慧化管理

在工业4.0 的时代背景下&#xff0c;随着企业数字化进程的推进&#xff0c;数字孪生可视化技术逐渐在汽车行业得到广泛应用&#xff0c;数字孪生智慧工厂的建设也成为了汽车行业数字化转型的趋势之一。汽车制造业属于典型的离散制造行业&#xff0c;汽车生产包含冲压、焊接、涂…

19.13 Boost Asio 发送TCP流数据

Boost框架中默认就提供了针对TCP流传输的支持&#xff0c;该功能可以用来进行基于文本协议的通信&#xff0c;也可以用来实现自定义的协议。一般tcp::iostream会阻塞当前线程&#xff0c;直到IO操作完成。 首先来看服务端代码&#xff0c;如下所示在代码中首先通过GetFileSize…

C++的Odyssey之旅——STL

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; &#x1f354;前言&#xff1a;我们已经将基本语法了解的差不多了&#xff0c;现在我们就该进入C中最重要也是最富有特点的一部分——STL。在学习C语言中我们想要使用顺序表、链表等一些数据结构进行做题时都需要进行这…

Go invalid memory address or nil pointer dereference错误 空指针问题

Go 指针声明后赋值&#xff0c;出现 panic: runtime error: invalid memory address or nil pointer dereference&#xff0c;这种是内存地址错误。 首先我们要了解指针&#xff0c;指针地址在 Go 中 * 代表取指针地址中存的值&#xff0c;& 代表取一个值的地址对于指针&am…

WordPress主题 JustNews主题6.0.1(亲测首页不空白)

介绍 资源入口 需要用WordPress5.X版本 JustNews介绍&#xff1a;一款专为博客、自媒体、资讯类的网站设计开发的WordPress主题&#xff0c;自v3.0版开始支持自主研发的前端用户中心&#xff0c;不仅支持注册、登录、账户设置、个人中心等常用页面的添加&#xff0c;还可以上传…

【原创】java+jsp+servlet简单图书管理系统设计与实现

摘要&#xff1a; 图书管理系统是一个专门针对图书馆管理而设计的系统&#xff0c;它可以帮助图书管理员有效的对图书进行管理&#xff0c;在图书管理系统的设计中&#xff0c;首先要考虑的是系统的需求分析&#xff0c;该系统的设计与实现涉及多个方面&#xff0c;包括数据库…

【赠书第2期】嵌入式虚拟化技术与应用

文章目录 前言 1 背景概述 2 专家推荐 3 本书适合谁&#xff1f; 4 内容简介 5 书籍目录 6 权威作者团队 7 粉丝福利 前言 随着物联网设备的爆炸式增长和万物互联应用的快速发展&#xff0c;虚拟化技术在嵌入式系统上受到了业界越来越多的关注、重视和实际应用。嵌入式…

哪些人更容易受到网络攻击?

当下&#xff0c;企业的安全已从传统的外部网络安全威胁防御&#xff0c;逐渐延伸到内部威胁防御。很多时候IT基础设施被攻陷不是外部造成&#xff0c;而是内部使然&#xff0c;这些内部威胁要复杂得多且难以管理。那么&#xff0c;哪些员工最脆弱、最有可能给企业组织带来网络…

Linux 入门

Linux 入门 1&#xff1a;linux 用户 root 用户 &#xff1a;也叫超级用户&#xff0c;UID0&#xff0c;其权限最高。系统用户&#xff1a;也叫虚拟用户&#xff0c;UID 1-999普通用户: UID1000-60000, 可以登录系统,操作自己目录下的文件. 1.1:用户操作命令 切换用户: su …

ts面试题总结

文章目录 前言ts和js的区别&#xff1f;什么是Typescript的方法重载&#xff1f;Typescript中never 和 void 的区别&#xff1f;typescript 中的 is 关键字有什么用&#xff1f;TypeScript支持的访问修饰符有哪些&#xff1f;如何定义一个数组&#xff0c;它的元素可能是字符串…