Django框架的基础知识笔记
发布日期:2022-03-02 13:23:45
浏览次数:34
分类:技术文章
本文共 4614 字,大约阅读时间需要 15 分钟。
-Django框架
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,Django常用的是MTV框架,因为Django是个基于MTV的框架Django,所谓的MTV是MTV Model数据库 Template模板文件 View是业务处理,分成三个文件,分别放置对应的文件进行封装处理1.首先我利用了pycharm安装了Django,然后找到pycharm使用的python路径,打开scripts后可以看到有django-admin这个文件,他是用来帮我们创建文件夹的
设置环境变量
然后我们设置环境变量,右键计算机-属性-高级系统设置-环境变量-下方框的系统变量中找到Path-编辑 末尾加;分号然后导入刚才的路径直到scripts 例如C:…\scripts 确定提交即可创建Django工程
然后打开cmd,输入如图代码 即在d盘目录中创建了一个叫laoniu的文件 然后去d盘看 确实创建好了,里面会有一个叫manage的py文件,这样子我们的Django程序就安装好了,可以运行再次打开cmd 输入以下代码
1.切换到D盘 D: 2.打开刚才创建文件 cd laoniu 3.python manage.py runserver 使用python运行起来manage文件,红线是提示我们访问的url网站是 127.0.0.1:8000/ 这样子我们就成功创建一个Django程序并访问了Django目录详解 mysite下 setting放的是配置文件例如导入啥模块 url是域名路径,即是根据域名呈现对应的内容 django内部默认用的socket的是wsb框架里的wsgi manage.py用于管理Django程序 python manage.py startapp name 创建apppython manage.py makemigrations 或 migrate
在数据库中创表,操作数据库,生成数据库 app目录详解 创建app通过python manage.py startapp name,下图为app目录的各个作用介绍Django在创建数据库时,及操作会在migrations里自动创建一个文件用于修改表结构记录,普通的insert啥的不记录
tips:在python3中创建文件下会有个init文件,删不删都可以,但在pytyon2中得有,例如导入该文件夹下的文件,如果没有init就导入不了,python3中不影响
Django实现用户登录
1.创建temolates文件夹并创建写登录样式的html文件 2.在app中的views下定义函数,其操作是打开上面的html,并返回给网页 也可以导入render,render内部就是封装了上方打开html文件并获取的操作,然后return render(request,'文件名')
,可以看到直接填login也可以找到,是因为Django内部给templates添加了环境变量,文件名为templates才可以直接写 3.在开始创建的Django目录url下,导入写了代码的views并其下列表添加后缀名,并写上函数的路径,也就是搜索127.0.0.1:8000/login即显示刚才定义的html 4.然后运行Django程序,并输入127.0.0.1:8000加上后缀/index,如图即成功实现Django用户登录页面 settings中配置静态文件 静态文件配置
1.首先创建静态文件并编辑,在需要导入的地方link导入 2.settings配置如图代码,这个静态效果才生效 模板路径配置 找到MIDDLEWARE注释掉箭头所指行,这才配置完成,提交数据时不会出问题 利用特殊符号替换值{ {}},首先用他定义个值 redirect做跳转,render打开返回给用户,可以添加第三个值,用于替换,例如下面函数为验证密码是否正确,先定义error_msg None为默认值 为空,判断账号密码如果正确,则利用redirect跳转到指定网页,否的话替换值为:用户名或密码错误 redirect只能填url 例如填/home则代表127.0.0.01:8000/home 定义函数必须括号加request 里面包含所有请求数据 模板渲染-模板循环模板循环以{ % for xx in xx%}开始xxx{ %endfor%}结尾
数组的形式
1.定义home函数,并以render方式返回,render方式即封装了打开文件阅读关闭功能0 2.定义USER_LIST字典 3.循环20次,temp 并添加到字典中 4.home函数后加值用于一会html文件双花号替换 5.去django文件下的url时,添加后缀和调用的函数 字典的形式 上图 1数字代码是:user_dict.k1获取k1的内容 2.数字 代码意思是 渲染时.items获得字典全部值 .keys获取所有key值 .values获得所有内容 4.举例首先创建名为home的html文件 5.添加循环,循环前方字典 6.使用双花号替换值,此处的索引直接.xx即可 目前使用的都是通过get方式上传,那么我们可以定义一个当提交方式为post时,为其添加内容,首先我们定义三个输入框,一个提交按钮,并设置其提交方式为post再在views我们写代码的地方,添加条件,如果提交方式为post则获取三个空的值,并造一个字典 添加到原先的字典下 操作流程 用户首先发来请求,通过路由系统也就是url找到对应的视图函数,函数可以去数据库中或者模板中拿数据,两者结合,返回给用户,用户在浏览器中就可以看到了 路由系统在Django下的url编写 视图函数在app下的.views下编写 静态文件在templates下编写 如html css操作可以在static下编写获取列表通过下标,获取字典通过k名
模板文件中if必须{% if %} 结束则{% endif %}for则endfor 模板文件中的if else使用 只有endif 没有endelse 获取单个数据及多个数据 获取单个数据 获取单个数据可以先在html文件中设置name value即获取的值 然后在view函数下定义获取请求中的 gender,然后在html网页中勾选后点击提交后,即可获取其value 多个数据 将type改为checkbox这是复选框,然后下方get改成getlist,再在网页中提交后,即可以数组方式返回,所被勾选的value值上传文件
传统的request.POST不能获取文件内容,只能拿到名字,首先在form表头后方加红线代码,如果不加,此上传的不是文件只是一段字符串 html下定义下方内容 用于浏览获取某文件 我们获取文件使用FILES,也就是改变了POST为FILES,其余一样即可获取文件 文件客户端上传到服务器 我们上方学了如何获取文件内容,那么我们来看看如何上传到服务器, 1.我们打开文件,被打开文件则为刚才get到的文件通过.name即可打开 mode是打开方式,此时打开还没获取到内容为空白的 2.循环获取文件的chunks函数是专门用于读取文件内容,此即可获取文件内容 3.将循环得到的内容,写到我们打开的文件命名kai中,并关闭 我从html中提交了一张图片,会上传当我们当前操作的目录,图为我上传的图片 为上传文件添加路径 每次上传的图片放到一个文件中,更加整洁,我们可以利用os模块为文件添加路径,首先创建一个文件名,并将此文件名输入到下方红线上,并后面加上我们所要打开的文件的名字,这就为文件添加了路径,并打开定义的路径变量名,当客户端提交文件时就会自动提交到其路径的文件下class类处理请求
页面请求过来时也可以使用面向对象定义处理请求,当请求为get和post的分别处理,1.首先在url里定义红线处,和以往定义函数不一样,如图 2.首先得导入view,创建类时需要继承view,然后分别定义get和post方法,对应的请求即会交给对应的方法处理 新增自定义方法 View里面有个方法叫dispatch其功能是当请求过来,根据类型是get还是post返回给html,是通过dispatch返回,我们看看他的view里dispatch代码 首先定义view中的dispatch方法,如果直接在下方 return 那么下方的get post方法不再生效,就如图直接返回OK结束了,其余方法不再生效,那么怎样才能自定义方法呢? 定义了dispatch方法后,再super调用父类中的dispatch,并返回客户端指定对应的请求,此时写这红标1.2两行是跟不写是一样的 例如我定义了两个print,那么执行顺序就是,第一个print然后是dispatch获取的get,再才是第二个打印,结果为:before get after 所有我们要想自定义返回可以在return前定义 URL路由系统 路由系统有三种1.一个url对应一个函数 或者是 一个url对应一类 2.一个类url对应一个函数 类url对应类对象 3.指定uid的值为当前空,由于传参时,按照位置顺序输出,这样子定义后uid的值就只会传给这个1空,改变位置也不影响正则类url对应函数
url对应类上面我们已经说过了,下面我们学习如何类url对应函数 1.首先在urls文件中添加路径,我们想用正则就得导入re_path()调用方法,如直接使用path不行 2.括号(\d+)即获取数字,也就是当此处填了数字会自动获取,当我们发出请求时执行view文件下的detail函数 3.detail函数传参,nid即获得前方正则所捕获的数字,并将其数字在字典里的内容赋值给user_value 4.然后我们再来编写detail.html文件,也就是呈现给用户的文件,通过双花号,获取前方赋值后的值,到此就成功实现每一个不同的请求调用同一个函数 形式参数映射 当我们传多个参数时,要注意位置,是按照位置顺序输出的,如果打乱位置,后续的值也会影响的,可以在设置url时将原本的(\d+)改为(?P\d+)则nid参数的值,不受位置的影响改变 url的名称 我们在配置url中,添加name,后续提交传name即可 url名称可以帮助我们获得一个新的url 当我们需要填写该url时,举例说明,例如提交时,按照下方红线写法即可 {% url ‘name’ %},提交时则会直接提交到定义name的url中,最大的好处,就是当我们改变url时,只用改变一处,其他会自动被name同步Django url路由分发
如果我们的写的url多,就容易搞混了,或者写重,我们就可以使用路由分发,不同业务的url分开,也就是分类,这时我们就要导入 include进行路由分发 根据下方定义即可,path后跟着的cmdb用作分类,具体要访问的访问时写在cmdb后即可,例如我要访问cmdb下的index即cmdb/index,具体的index代码则下在app01目录下的urls文件里,这样就实现了分类转载地址:https://blog.csdn.net/WOSHIBEIZHE/article/details/119902375 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月30日 19时47分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Python 基础知识考题与解答(2020 版)
2019-04-26
说说 Oracle 的 SYSDATE 函数
2019-04-26
说说 Oracle 的 NVL 与 NVL2 函数
2019-04-26
说说 TCP 协议以及三次握手流程
2019-04-26
说说 Oracle 的 TRUNC 函数
2019-04-26
系统架构设计笔记(41)—— 系统过渡计划
2019-04-26
系统架构设计笔记(42)—— 软件架构概述
2019-04-26
系统架构设计笔记(57)—— 测试自动化与面向对象的测试
2019-04-26
系统架构设计笔记(58)—— 嵌入式系统概论
2019-04-26
说说 Python 的生成器表达式
2019-04-26
说说 Activiti 中的用户与组的概念
2019-04-26
系统架构设计笔记(62)—— 嵌入式数据库管理系统
2019-04-26
系统架构设计笔记(63)—— 实时嵌入式操作系统
2019-04-26
说说如何使用 Canvas 绘制弧线与曲线
2019-04-26
系统架构设计笔记(64)—— 嵌入式系统设计
2019-04-26
系统架构设计笔记(65)—— 项目的范围、时间与成本
2019-04-26
系统架构设计笔记(66)—— 配置管理与文档管理
2019-04-26
说说 Python 元组的高级用法
2019-04-26
系统架构设计笔记(66)—— 配置管理与文档管理
2019-04-26