孤寒者
HDZ核心组成员、华为云享专家、CSDN原力计划作者、CSDN全栈领域优质创作者。专注分享Python领域原创系列文章,如Python爬虫、Django、tornado、flask等。
展开
-
《Django框架从入门到实战》目录
《Django框架从入门到实战》目录原创 2023-01-04 22:30:05 · 24093 阅读 · 10 评论 -
43.Django权限系统auth模块详解
昨天我们为了登录admin,通过命令创建了超级用户,你是不是有个疑问——这创建的超级用户的信息是存放在哪里了呢? 这就想到了我们映射数据库时,Django自动创建的一些表(这也是之前进行数据库迁移时没有提到的那些表)!!!0.初接触 如上图就是Django自带的auth系统对应的表,也就是存放了之前创建的超级用户信息的表(也也就是之前没有提及到的数据库迁移生成的表~)注意点:上面所示表中有多对多表关系生成的中间表,而Django很人性化的一点是:如果是多对多关系产生的中间表,其命名方式是.原创 2021-09-10 23:05:52 · 25495 阅读 · 231 评论 -
42.admin后台管理的使用及基本设置
3.admin后台(1)好奇引入:在项目目录下的urls.py文件中我们会看到这样一个url的配置,你有自己去访问这个url地址吗??访问之后发现了什么呢???访问127.0.0.1:8000/admin之后,你会看到出来这样一个界面,让你输入用户名和密码去登录?那么用户名和密码从哪里来,登录之后又是什么样的呢?其实这就是Django自带的后台管理页面!如果是一些小型项目是可以直接用它的~(2)简单介绍Django管理页面:(后台管理,管理数据库中的数据。可以对当前项目数据库中的数据原创 2021-09-10 00:19:23 · 10768 阅读 · 189 评论 -
41.登录注册小案例实现(使用Django中的form表单来进行用户输入数据的校验;文末附源码)
登录注册案例1.登录注册第一步——创建模型生成数据表:(1)名为mucis的app下的models.py文件中创建:from django.db import models# Create your models here.class User(models.Model): username = models.CharField(max_length=30, unique=True) password = models.CharField(max_length=50)(2)原创 2021-09-10 08:00:08 · 20371 阅读 · 301 评论 -
40.上下文处理器&&如何自定义上下文处理器并使用
上下文处理器在模板中想要使用的变量是从视图函数中的context这个上下文的参数中传递进来的,每个视图函数需要什么参数就传什么参数.上下文处理器就是创建模板变量,但是与使用context传参有所不同。使用上下文处理器可以给每一个模板都提供相同的变量①在settings.py中,包含了当前使用的上下文处理器。他的作用是可以给每一个模板都提供相同的变量②自定义上下文处理器例子:(1)实现给所有模板都传递一个name值为perter的变量小提醒:自定义上下文处理器也可以放在该项目的任意可以导入的地方原创 2021-09-09 21:17:34 · 9906 阅读 · 145 评论 -
39.中间件学习之如何使用自定义中间件
引言——举个小例子来讲讲:比如:你登录一个网站,进去主页面的时候网站会显示你是否登录,你访问此网站的别的页面的时候也都会显示你是否登录。难道你要在项目里的每个视图里都进行一次登录与否的判断么!!!这不是很麻烦了,这时候就可以借助中间件十分简单的实现,我们只需要自定义一个中间件,重写其中的方法process_request(self,request) :,在此方法中进行登录与否的判断即可!因为此方法是在执行视图之前被调用,而且是用户的每个请求都会调用!这就是中间件的牛逼之处!!!中间件现在你.原创 2021-09-07 23:36:51 · 6957 阅读 · 164 评论 -
38.状态保持之Session详解
引言——上文讲的是cookie,但是cookie的键和值都是明文的形式存储在客户端浏览器上,很不安全!那有没有更好些的来存储登录状态的方式呢???这就需要讲讲session了!1.状态保持——cookie和session:http协议是无状态的:每次请求都是一次新的的请求,不会记得之前通信的状态。客户端与服务端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务端存储与会话有关的数据。存储方式包括cookie,session,会话一般指session对象。使用cookie,所有数据.原创 2021-09-06 23:36:49 · 21637 阅读 · 151 评论 -
37.Django中设置获取和删除cookie
引言——我们都知道HTTP(超文本传输协议)是一个无状态的协议。那么客户端和服务器都是怎么记录登录的状态的呢——也就是怎么维持登录的呢?(比如:你在浏览器中登录过了爱奇艺账号,哪怕你网页关闭了,只要时间不长,你再次登录的话会发现不用输入账号就已经是登录状态了!)什么是cookie:简单介绍一下什么是cookie,客户端浏览器上的一个文件,以键值对进行保存,类似字典{‘k’:‘v’},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当客.原创 2021-09-06 17:48:41 · 16677 阅读 · 153 评论 -
36.HttpResponse对象的学习
引言——很多时候我们在访问网页的时候,网页的开发者为了美观,大多数都是使用JS效果来显示诸如弹窗之类的效果(提醒登录呀/提醒注册呀/该用户名已经注册呀之类的)那么,使用Django如何实现JS效果呢?HttpResponse对象:①HttpResponse对象的属性和方法:属性:content:表示返回的呢日用,字符串类型;charset:表示response采用的编码字符集,字符串类型;status_code:响应的HTTP响应状态码;content-type:指定输出的MIME类型.原创 2021-09-06 17:14:16 · 14733 阅读 · 191 评论 -
35.文件上传
文件上传①设置文件的存储路径:在项目根目录下static中创建media文件夹图片上传后,会被保存到“/static/media/目录下”打开settings.py文件,增加MEDIA_ROOT项②文件上传的前端中form表单的编写:FILES只有在请求的方法为POST且提交的<form>带有enctype="multipart/form-data"的情况下才会包含数据。否则,FILES将为一个空的类似于字典的对象。<!DOCTYPE html><ht原创 2021-09-06 16:08:23 · 26965 阅读 · 167 评论 -
34.类视图
类视图以函数的方式定义的视图称为函数视图,函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑(或者是编写多个函数对应不同的HTPP请求方式),代码可读性与复用性都不佳。在Django中也可以使用类来定义一个视图,称为类视图。使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。View类视图以请求方式为类方法.在对应的方式下面编写对应的逻辑函数. 举例讲解:如果我们浏览器访问这个URL,通过终端打印可以发现调用原创 2021-09-05 18:09:40 · 16765 阅读 · 127 评论 -
33.form标签中的GET和POST提交方式
form标签中的GET和POST在HTML中,form表单的作用是收集标签中的内容,<form>...</form> 中间可以由访问者添加类似于文本,选择,或者一些控制模块等等.然后这些内容将会被送到服务端。一个表单必须指定两样东西:form的method参数用于设置表单的提交方式,默认使用POST.action用于设置表单的提交url,如果不写或者保持空字符串,那么将使用当前的URL.①form表单使用post方式提交的例子:下面例子实现流程: 当我们第一次访原创 2021-09-05 17:19:20 · 21207 阅读 · 174 评论 -
32.HttpRequest对象的学习
引言——在前面你也跟着本博主编写了那么多的视图函数,但是每个视图函数它都会接收一个名为request的参数。是不是很好奇:视图函数接收到的request到底是个什么对象!!!HttpRequest对象1.我们可以打印这个request对象,看一下:<WSGIRequest: GET '/music/test3/'>我们知道WSGIRequest是一个HTTP请求对象,里面包括了提交的方式和URL路径。综上可知:服务器接收到http协议的请求后,会根据报文创建HttpReq.原创 2021-09-05 10:35:54 · 14379 阅读 · 165 评论 -
31.模型中的一些查询骚操作——模型中的聚合查询,Q查询,F查询,分组查询;
1.补充的模型学习:(1)聚合查询:aggregate()是QuerySet 的一个终止子句,它返回一个包含一些键值对的字典(2)Q查询: 如果你需要执行更复杂的查询(例如OR语句),你可以使用Q对象。Q对象可以使用&(and)、|(or)操作符组合起来;使用~(not)操作符在Q对象前表示取反(3)F查询: (查询的是一整列数据!)针对两个字段的值的比较(4)分组查询: 为调用的QuerySet中每一个对象都生成一个独立的统计值...原创 2021-09-04 10:51:48 · 26790 阅读 · 173 评论 -
30.博客小案例功能升级——分页功能的实现
上一文中实现了一个简易版的博客小案例,但是后面有粉丝私信我说博客列表页如果数据多的话很不好看,问我能不能做个分页!话不多说——安排~拓展——分页功能的实现Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。(1)简单讲解:第一部分(导入&&实例化分页对象&&分页对象常用方法)# 导入from django.core.paginator import Pag.原创 2021-09-11 11:12:10 · 36897 阅读 · 268 评论 -
29.保姆级教程带你做一个属于自己的博客网站
功能介绍:页面功能主页index.html展示添加博客和博客列表的文字,实现页面跳转添加页add.html输入文章标题及内容,并将内容提交到数据库中列表页list.html将数据库中所有博客展示到前端页面中,点击文章可以查看文章的详情,附带编辑和删除的功能详情页detail.html显示文章的标题及内容1.环境配置及Django初始化(1)ubuntu中新建供本项目使用的虚拟环境:在ubuntu中新建一个供此项目使用的虚拟环境(名为dja_env)原创 2021-09-15 13:30:02 · 143977 阅读 · 267 评论 -
28.多表查询——跨关联关系的多表查询
多表查询—跨关联关系的查询**Django 提供一种强大而又直观的方式来“处理”查询中的关联关系,它在后台自动帮你处理JOIN。 若要跨越关联关系,只需使用关联的模型字段的名称,并使用双下划线分隔,直至你想要的字段:**上实战训练——更直观理解:(得到的都是QuerySet型数据!)from django.http import HttpResponsefrom .models import Department, Student, Course, Stu_detaildef add_u原创 2021-08-31 16:13:01 · 27098 阅读 · 128 评论 -
27.一对一,一对多,多对多关系表的各种骚操作
1.关系表的数据操作(1)一对多表关系的数据的添加修改①学院表信息的插入:常规方法是写个视图函数,在视图函数里添加插入数据的逻辑代码。但是这样的话——你得访问此视图函数对应的接口才能添加成功!岂不麻烦~所以,本博主推出另一种简单的方法——如下图:直接执行插入数据的逻辑代码即可!(Tab键可自动补全代码哦!!!)②学生表信息的插入(使用常规视图插入数据)from django.http import HttpResponsefrom .models import Department,原创 2021-08-31 15:22:57 · 27628 阅读 · 183 评论 -
26.Django实现表关系(一对多,一对一,多对多))
表关系的实现:实践:(1)模型的定义(models.py文件):class Department(models.Model): """ 学院表 """ d_id = models.AutoField(primary_key=True) d_name = models.CharField(max_length=30) def __str__(self): return "Department<d_id=%s,d_name=%s&原创 2021-08-31 10:19:00 · 18987 阅读 · 98 评论 -
25.常用的字段类型映射关系,字段类型及Field的常用参数
1.常用的字段类型映射关系:2常用的字段类型讲解:IntegerField : 整型,映射到数据库中的int类型。CharField: 字符类型,映射到数据库中的varchar类型,通过max_length指定最大长度。TextField: 文本类型,映射到数据库中的text类型。BooleanField: 布尔类型,映射到数据库中的tinyint类型,在使用的时候,传递True/False进去。如果要可以为空,则用NullBooleanField。DateField: 日期类型,没有原创 2021-08-30 17:06:04 · 15789 阅读 · 124 评论 -
24.Django中常用的查询数据的方法以及查询对象的条件
Django中对数据的查询:(1)常用的查询方法:获取所有记录:s = User.objects.all()获取第一条数据:s = User.objects.first()获取最后一条数据:s = User.objects.last()关于二、三两个方法注意点: 对于QuerySet对象,我们也是可以通过下标取值获取对应的实例对象。如下所示——虽然这两个方法作用一致(获取到对应的实例对象),但是推荐使用(而且一般使用的)都是first()方法及last()方法。原创 2021-08-30 10:49:08 · 27865 阅读 · 163 评论 -
23.ORM系统实现对数据库中数据的增删改查
使用Django中的ORM系统实现对数据库中数据的增删改查!(1)数据的增删改查----------增加数据!在视图函数中导入User模型类,然后使用下面的方法添加数据:from django.http import HttpResponsefrom .models import User# Create your views here.def add_user(request): #方法一 taka = User(name='taka',age=18) taka原创 2021-08-29 23:36:23 · 14733 阅读 · 130 评论 -
22.模型的创建与映射
模型的创建与映射共分三步走:编写models.py;对项目调用makemigrationgs命令;让Django迁移项目。第一部分——上实操!(1)编写models.py:(music/models.py文件)模型告诉Django如何处理应用程序中存储的数据,在代码层面,模型就是一个类!对应数据库中的数据表!from django.db import models# Create your models here.class User(models.Model): #Dj原创 2021-08-29 17:12:55 · 14963 阅读 · 165 评论 -
21.Mysql数据库连接配置
前言——新建一个Django项目,并且配置后成功出现小火箭!新建一个名为music的app。原创 2021-08-29 16:27:46 · 6059 阅读 · 120 评论 -
20.Django模型映射关系
Django模型映射关系三大知识点:模型类必须都写在app下的models.py文件中。模型如果需要映射到数据库,所在的app必须注册.一个数据表对应一个模型类,表中的字段,对应模型中的类属性.原创 2021-08-28 18:03:11 · 14949 阅读 · 142 评论 -
19.模型基础ORM简介
引言——数据库多种多样,这导致使用不同的数据库就要使用不用的操作数据库的命令,如果我们先是使用的Mysql数据库, 之后因为某些要求要使用到别的数据库,难道我们要将我们整个项目的相关语句全部都改一遍吗!!!但是至少我知道Django不需要。因为Django自带强大的ORM系统!!!小拓展:如果使用的是Java的web框架或者是tornado,flask等不具备此系统的框架,我们也是可以嵌套使用Django框架的ORM系统进行模型迁移哦!!!其实也是Django牛逼的一大原因!!!1.Djan.原创 2021-08-28 17:58:50 · 1756 阅读 · 127 评论 -
18.自定义标签及模板中的使用【由浅入深】
自定义标签:第一种:自定义普通标签!(1)自定义标签的编写:common_extras.py文件的编写!from datetime import datetime#显示当前时间#第一种:在模板中使用自定义标签时传递参数@register.simple_tagdef current_time1(format_string): return datetime.now().strftime(format_string)#第二种:注册标签时使用takes_context=True,则可以原创 2021-08-28 17:33:51 · 13317 阅读 · 170 评论 -
17.自定义过滤器及模板中的使用(实战通过自定义过滤器实现内置过滤器lower和cut的功能)
引言——分析Django内置的模板过滤器:通过分析可以将内置的过滤器理解为:一个带有一个或两个参数的python函数:(输入的)变量的值【注意:不一定是字符串形式,在前面也讲过可以是哪些类型。】参数的值——可以有一个初始值,或者完全没有参数。 自定义过滤器新建一个名为ceshi的app以供本文学习使用;自定义过滤器及标签所在的templatetags目录放置的位置,我们选择为新建的app特用(这就意味着这个app一定要注册哦!);第一个——通过自定义过滤器实现内置过滤器原创 2021-08-28 11:29:47 · 1887 阅读 · 125 评论 -
16.引言篇——自定义过滤器及标签
引言——在前面讲述了如何使用Django内置的过滤器,这在我们进行某些项目开发时很是方便。但是,内置的过滤器毕竟有限(当内置的满足不了我们的需求该怎么办?),但是规则是死的,人是活的。这就引出了接下来要讲的内容:自定义过滤器及标签。首先,要理解两个问题是:自定义过滤器及标签是什么——根据一定规则,自己定义出符合需求功能的;自定义过滤器及标签用在哪里——用在任何你有需求的地方;其实,你可以想想为什么你会使用自定义函数,自定义模块!都是一个道理。1.自定义过滤器及标签的文件路径配置:我们都.原创 2021-08-27 23:13:55 · 26581 阅读 · 118 评论 -
15.结合前面知识点,❤️使用 Django实现定制女朋友版的小相册❤️
15.结合前面知识点,❤️使用 Django实现定制女朋友版的小相册❤️原创 2021-08-28 09:06:16 · 14578 阅读 · 295 评论 -
14.Django中模板的继承及引用
引言:大家啊可以随便取找个网站,比如:淘宝。多去看看它不同的页面,用你闪亮的大眼睛去找不同点和相同点。 到一定时候,你会发现,网站中有些不同的页面,它们中的部分数据是完全一模一样的;而且有些数据不一样的部分,它们前端的排版格式却是一模一样的哦! 你肯定会心生疑问——难道这些页面全都要一个个敲代码做嘛!这也太绝望了吧!!! 但是——不要忘记了!程序猿一大原则是:绝不做重复的事! 所以对于上述现象,就涉及到了一个知识点——模板的继承与引用!!!1.模板的继承与引用Django模版引.原创 2021-08-23 16:36:22 · 2148 阅读 · 203 评论 -
13.Django中几大常用模板标签讲解及实战使用 【for循环;if判断;页面跳转;开启关闭自动转义;url携带参数传递;注释】
1.常用模板标签(1)模板标签重要概念:①定义:标签在渲染的过程中提供任意的逻辑。②标签语法: 由 {% 和 %} 来定义的,例如:{%tag%} {%endtag%} (2)常用模板标签讲解及实战使用:第一个——模板标签中的for循环!引言:假设我们现在有个需求是——后端视图函数从数据库中获取了需要渲染在前端页面的数组(为一个列表类型的数据)。 我们如何一条条渲染显示在前端页面中,类似于报纸上那种! 这就可以用到模板标签中的——for循环简单模拟实现!①视图函数views.原创 2021-08-23 15:39:40 · 14941 阅读 · 130 评论 -
12.Django中静态文件的引用
引言:在我们Django中如何引用三大静态文件(JavaScript,CSS,image)呢? 这就是本文要讲述的内容——静态文件的引用!效果展示:点击确定之后:1.静态文件引用:(1)创建静态文件目录:在项目目录下创建static目录, 为了区分开各种类型的静态文件,再分别创建css,image,js文件目录:(2)静态文件路径的配置:在settings.py文件中添加STATICFILES_DIRS设置静态文件目录路径,同templates设置。(settings..原创 2021-08-23 11:14:44 · 1754 阅读 · 144 评论 -
11.Django中常用过滤器
引言:前面讲过了Django中使用模板变量。使用很简单,那么有没有什么关于模板变量的骚操作呢? 答案是肯定有的,这就是本文要讲的——过滤器!1.过滤器(1)纯干货讲解:作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。语法:{{ fruits|lower }} 管道符号进行链式调用(可以理解为嵌套使用!),比如实现一个功能,先把所有字符变成小写,再把第一个字符转换成大写。语法:{{fruits|lower|c.原创 2021-08-23 10:40:31 · 13141 阅读 · 151 评论 -
10.Django中模板变量详解
引言:我们在页面上会看到,谁登录的就会显示谁的信息,那么这个页面上的变量信息是怎样实现的呢? 这就是本文要讲述的内容——Django中的模板变量!1.模板变量!可以在前端页面中使用模板变量来取数据库中的数据,实现前端页面数据动态显示。(1)模板变量使用规则:(在HTML模板中使用!)语法: {{ 变量名 }}命名由字母和数字以及下划线组成,不能有空格和标点符号可以使用字典、类对象、方法、函数、列表、字符串不要和python或django关键字重名 注意:如果dat.原创 2021-08-22 16:53:30 · 4611 阅读 · 134 评论 -
9.模板路径大总结——两种方式配置模板路径
引言——上文讲解了Django如何引用漂亮的前端模板。但是有个问题是Django是如何进行模板路径的搜索呢? 这也就是本文要讲解的内容——模板路径的总结 之 两种方式配置模板路径!1.模板路径总结:在配置文件setting.py中找到TEMPLATES设置来配置。这是一个设置选项的列表,会提供两种方式配置模板路径(选一个用即可):(1)第一种方式: DIRS->定义有一个目录【查看源码会发现就是本项目项目目录直接子目录中templates的完整目录,例如下图就是:djtest11.原创 2021-08-22 16:05:14 · 1835 阅读 · 192 评论 -
8.Django怎样去调用漂亮的HTML前端页面?
引言: Django如何调用HTML前端页面呢?Django怎样去调用漂亮的HTML前端页面呢?就直接使用render方法即可!render方法是django封装好用来调用HTML前端模板的方法!1.模板放在哪?在主目录下创建一个templates目录用来存放所有的html的模板文件。(如果是使用pycharm创建django项目的话,默认就会自动创建这个目录哦!但是用命令创建django项目的话是没有此目录的!)templates目录里面再新建各个以app名字命名的目录来存放各个a.原创 2021-08-21 11:57:51 · 5470 阅读 · 193 评论 -
7.Django中页面重定向的使用 && path()中参数name的讲解
引子: 讲一个每个人都碰到过的情形:我们在页面中登录QQ空间的时候,登录成功后会跳转到你的QQ空间主页。 这就是本文要讲的内容——页面重定向!第一部分:Django实战使用——页面重定向1.项目目录下的urls.py文件:from django.contrib import adminfrom django.urls import path,re_path,include #include用来分配的from . import viewsurlpa.原创 2021-08-21 11:39:45 · 2062 阅读 · 157 评论 -
6.Django中子路由的使用【配合include()函数使用进行路由分配】 && path()中参数kwargs讲解
引用——现在有个问题是: 如果我们项目做的很大,一个项目里有数十个app,总共成百上千个路由,难道我们全都写在一个主路由urls.py文件里么!看着不舒服,管理也很难受啊!!! 这就引出了本文的内容——子路由的使用(配合include()函数使用!)1.include的作用:一个project有一个主路由urls.py(只用来分配!)各个app也建立自己的urls.py(但是浏览器中访问url的时候最先访问的仍是主路由对应的urls.py文件)所以用include()函数在主路由对.原创 2021-08-21 11:15:39 · 2221 阅读 · 284 评论 -
5.Django路由path和re_path详解
假设现在有个需求: 需要通过URL进行参数传递,我们该怎么做呢? 其中有个方法就是本文要讲的内容——path和进阶版的re_path。urls.py文件中的path和re_path1.path的基本规则:path('test/<xx>/',views.test)第一个参数——test/<xx>/:使用尖括号(<>)从url中捕获值。包含一个转化器类型(converter type)。没有转化器,将匹配任何字符串,当然也包括了/字符。第二个.原创 2021-08-21 10:54:19 · 26834 阅读 · 133 评论