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 创建app

python 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:js中的Jquery框架基础知识
下一篇:Django对于数据库的基础知识

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年03月30日 19时47分27秒