Django
文章平均质量分 56
zy010101
会写一点代码
展开
-
django-channels实现群聊
channels Layer是一种通信系统。它允许多个消费者实例相互交谈,以及与 Django 的其他部分交谈。借助Layer可以很方便的实现群聊功能。无需我们手动管理websocket连接。原创 2021-12-07 17:30:03 · 1083 阅读 · 0 评论 -
Django Channels配置
Django ChannelsChannels包装了Django的原生异步视图支持(Django3之后支持异步视图),允许Django项目不仅可以处理HTTP,还可以处理WebSockets,MQTT等。Channels提供了与Django的身份验证系统,会话系统等的集成,使得将纯HTTP项目扩展到其他协议比以往任何时候都更容易。因此,通常我们在Django3上实现websocket还是会使用channels原创 2021-12-03 15:47:54 · 5038 阅读 · 0 评论 -
Daphne运行Django静态文件丢失
Daphne静态文件404原创 2021-12-02 16:06:40 · 2501 阅读 · 0 评论 -
Django中使用session
Django中使用session由于HTTP无状态协议,它对交互式的场景没有记忆能力。举个例子来说明一下。例如:A网站是一个购物网站,你需要登录你的账户,然后才能购买东西,完成付款。那么由于HTTP是无状态的协议,你刚才进行了登录操作,但是下一次你点击某个商品,发起请求,这时候服务器视为一个新的请求,不知道上一次你做了什么。为了解决这个问题,就必须有某种方式来标记用户身份。这样,当用户在应用程序的Web页之间跳转时,就不会丢失用户身份。session就是为了目的而存在的。在Django中默认是启用se原创 2021-10-31 16:55:52 · 1658 阅读 · 0 评论 -
Django操作cookie
Django操作cookiecookiecookie有时候也写作cookies,关于cookie的内容可以参考cookie与web缓存Django设置cookiecookie有服务器端生成,发送给客户端(一般是浏览器)。在Django中设置cookie的方法原型如下所示:HttpResponse.set_cookie(key, value=’’, max_age=None, expires=None, path=’/’, domain=None, secure=False, httponly=Fa原创 2021-10-31 15:47:49 · 5281 阅读 · 3 评论 -
Django重定向
Django重定向在前后端分离的情况下,我们很少使用重定向。为什么要使用重定向?我们为什么要将用户的访问重定向到不同的 URL 地址?我们看看 Django 项目是怎么回答的:当你未登录并请求需要身份验证的URL(如Django管理员)时,Django会将你重定向到登录页面成功登录后,Django会将你重定向到最初请求的URL当你使用Django管理员更改密码时,系统会将你重定向到指示更改成功的页面当你在Django管理员中创建对象时,Django会将你重定向到对象列表。作者:爱吃鱼de原创 2021-10-30 10:30:00 · 3115 阅读 · 0 评论 -
Django获取HTTP请求体数据
Django获取HTTP请求体数据请求体的数据格式是多种多样的,可以是表单类型字符串,可以是JSON字符串,可以是XML字符串。通常,都是在POST请求中携带请求体参数。Django默认开启了CSRF防护,会对POST,PUT,DELETE,PATCH请求方式进行CSRF防护验证,之后,我会专门写文章来讲述XSS攻击和CSRF攻击。现在,可以先注释掉settings.py中的MIDDLEWARE列表中的'django.middleware.csrf.CsrfViewMiddleware'表单类型原创 2021-10-29 17:10:29 · 888 阅读 · 0 评论 -
Django获取URL中的数据
Django获取URL中的数据URL中的参数一般有两种形式。如下所示:1. https://zy010101.blog.csdn.net/article/details/1208169542. https://so.csdn.net/so/search?q=Django&t=blog&u=zy010101我们将第一种形式称为“URL路径参数”;第二种形式称为“URL关键字形式”。下面讲述如何在Django中获取这两种形式的数据。在此之前,需要说明的是,在URL中携带数据的方式一般原创 2021-10-29 13:41:31 · 2167 阅读 · 0 评论 -
Django请求和响应对象
Django请求和响应对象Django 使用请求和响应对象在系统中传递状态。当一个页面被请求时,Django 会创建一个 HttpRequest 对象,这个对象包含了请求的元数据。然后,Django 加载相应的视图,将 HttpRequest 作为视图函数的第一个参数。每个视图负责返回一个 HttpResponse 对象。HttpRequest对象下面介绍HttpRequest对象常用的属性和方法。HttpRequest常用属性HttpRequest.body原始的 HTTP 请求体作为一原创 2021-10-29 10:42:36 · 599 阅读 · 0 评论 -
Django使用django-apscheduler的问题
Django定时任务由于业务需要,后台要有一个定时任务的功能,起初考虑单独出来使用Linux系统的corn来实现。但是考虑到这样会很不方便。于是便寻找定时任务的模块,就找到了APScheduler,考虑到要在Django中使用,后来就采用了django-apscheduler来作为定时任务的模块,但是这个模块本身有bug。当你使用uwsgi部署并开启多进程的时候,该模块的内置使用get方法来获取任务列表,然后就会报错。因为同一时间有了多个任务,get方法获取到多个任务的时候就会抛出异常。Django定时原创 2021-10-22 11:34:46 · 2212 阅读 · 7 评论 -
查看Django ORM生成的SQL语句
查看Django ORM生成的MySQL数据库的SQL语句Django ORM生成的MySQL数据库的SQL语句其实可以通过打印QuerySet对象的query属性来查看,但是这样只能查看到对应的SQL语句,你依旧不知道在Mysql数据库中执行了操作。所以最好的办法还是直接查看MySQL数据库的日志。通过QuerySet对象的query属性来查看SQL语句>>> from book.models import BookInfo>>> objs = BookInfo原创 2021-10-17 22:02:48 · 1550 阅读 · 0 评论 -
Django的shell工具
Django的shell工具Django的manager提供了shell工具,可以让我们在命令行中测试python代码,这样就极大的方便了调试Django代码。shell工具进入shell工具的命令:python3 manage.py shell进入交互式命令行下,我们可以很方便的测试代码,例如:Python 3.8.10 (default, Sep 28 2021, 16:10:42) [GCC 9.3.0] on linuxType "help", "copyright", "cred原创 2021-10-17 21:21:41 · 1031 阅读 · 0 评论 -
Q查询和F查询
Q查询和F查询Q查询在filter() 等方法中,查询使用的关键字参数是通过 “SQL AND” 连接起来的。如果你要执行更复杂的查询(例如,由 SQL OR 语句连接的查询),可以使用 Q 对象。一个 Q 对象 (django.db.models.Q) 用于压缩关键字参数集合。Q 对象能通过 & 和 | 操作符连接起来。当操作符被用于两个 Q 对象之间时会生成一个新的 Q 对象。例如:Q(question__startswith='Who') | Q(question__startswi原创 2021-10-15 14:33:22 · 1228 阅读 · 0 评论 -
Django的Manager和QuerySet
Django的Manager和QuerySet要从数据库检索对象,需要通过模型类的 Manager 构建一个 QuerySet。换言之,models,manager和queryset是我们和数据库交互必须的三个东西。models本身没有什么需要多说的,Django 使用了一套直观的系统:一个模型类代表一张数据表,一个模型类的实例代表数据库表中的一行记录。模型类的save方法可以插入,更新,删除数据。那么是否可以查询数据呢?实际上由于“一个模型类的实例代表数据库表中的一行记录”,因此模型类的实例是不能起原创 2021-10-15 13:37:17 · 805 阅读 · 0 评论 -
Django的BASE_DIR
Django的BASE_DIR在Django的settings.py文件中有一个变量BASE_DIR,如下:BASE_DIR = Path(__file__).resolve().parent.parent仔细读代码,__file__代表的是settings.py文件,那么Path(__file__).resolve()的结果将会是settings.py文件的绝对路径;然后取其父目录的父目录,也就是django-admin创建项目之后的路径。Django中导包路径因此,在Django项目中导入包原创 2021-10-14 13:46:06 · 1680 阅读 · 0 评论 -
Django删除数据
Django删除数据删除实际上可以分为两种情况,一种是直接删除,这样数据将会从物理存储设备上被删除;另一种是“懒惰删除”,只是将数据做了一个标记,表示其被删除。本文所述的是直接删除,即“从数据库中将数据删除”。方式一使用 model 的delete()方法from book.models import BookInfoBookInfo.objects.get(id=13).delete()model具备save()方法,也具备delete()方法,比较合理。方式二使用QuerySet的d原创 2021-10-09 01:04:51 · 10449 阅读 · 0 评论 -
Django修改数据
Django修改数据下面介绍Django的ORM修改数据的方式。方式一先查询,然后修改,再保存修改。from book.models import BookInfobook = BookInfo.objects.get(id=1) # 查询id为1的数据book.readcount = 200 # 在内存中修改数据book.save() # 将修改保存到数据库关于save()方法,可原创 2021-10-09 00:50:43 · 2701 阅读 · 0 评论 -
Django新增数据
Django新增数据方式一增加是比较简单的操作,Django的ORM可以使用如下的方式新增一条数据。from book.models import BookInfobook = BookInfo(name="Django教程",readcount=0,commentcount=0) # 创建BookInfo对象book.save() # 使用save方法保存到数据库Django做的比较优雅的事情是:Django的一个model类对应数原创 2021-10-09 00:31:10 · 4139 阅读 · 0 评论 -
Django模型
Django模型Django的模型定义在models.py文件中。模型是MVT中的M,也相当于MVC中的M。在Django中,模型必须继承自Model类。例如:from django.db import models# Create your models here.class BookInfo(models.Model): # 一个模型类就会对应生成数据库中的一张表 """书籍模型""" name = models.CharField(max_length=1原创 2021-10-03 18:14:59 · 830 阅读 · 0 评论 -
Django使用MySQL数据库
Django使用MySQL数据库Django默认使用sqlite3作为数据库,web服务一般不会使用sqlite作为数据库,下面是在Django中使用mysql数据库的配置步骤。在settings.py文件进行配置DATABASES = {'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 主机IP 'PORT': 3306, # 端口号原创 2021-10-02 19:50:34 · 314 阅读 · 0 评论 -
Django静态文件(CSS,JS等)
Django静态文件静态文件是指js,css,图片等文件。render可以返回模板文件(HTML),但是缺少了js,css。在Django中我们一般会指定一个目录存放静态文件,这样方便管理。在现在前后端分离的大环境之下,静态文件我们几乎也用不到。另外在HTML中调用的时候也需要指定静态文件的路径。一般都会将静态文件放置在项目的根目录下。要使用静态文件,需要配置两个参数。STATIC_URLSTATICFILES_DIRS模板文件在模板文件(HTML)中指定静态文件的位置即可。如下所示:&l原创 2021-10-02 19:10:22 · 804 阅读 · 0 评论 -
Django模板(HTML)
Django模板Django中的模板相当于传统MVC模式中的V,而在Django的MVT中,模板是T。在传统的前后端不分离的开发形式中,Django的模板是非常有用的,但是在今天前后端分离的大环境下,Django模板基本没有什么用处。模板能够从视图返回的HttpResponse中获取数据,然后处理数据,进行显示。创建模板如果需要使用Django的模板,那么通常在manage.py的同级目录下创建目录templates文件夹,然后在该文件夹下创建Django APP相对应的文件夹,例如:templa原创 2021-10-02 14:57:47 · 943 阅读 · 0 评论 -
Django路由(urls.py)
Django路由(urls.py)路由控制着视图函数的调用。即发起的请求所包含的路由就对应着Django会调用该路由所对应的视图函数。所以,综合来看,在Django中的视图+路由才应该是等价于MVC模式中的C。视图函数确实完成了业务逻辑,但是还差了一个步骤,那就是如何调用这个视图函数,这就是路由的作用。通过路由,Django将不同的路由和不同的视图函数对应起来。这样就可以根据请求中的路由来调用相应的视图函数完成业务逻辑的处理。书写路由一般而言,我们会在每一个APP下面新建一个urls.py文件用来存放原创 2021-10-01 20:22:43 · 1466 阅读 · 0 评论 -
Django视图(views.py)
Django视图(views.py)Django的视图是MVT模式中的V,也对应于MVC设计模式中的C。视图函数视图函数是用来完成业务逻辑的,一个视图至少一个接受请求的参数,处理完业务逻辑之后,返回响应。下面以一个非常简单的例子来说明视图函数。from django.http import HttpRequest, HttpResponsedef index(request): ... # 处理业务逻辑 return HttpResponse("请求成功") # 返回响原创 2021-10-01 18:58:20 · 449 阅读 · 0 评论 -
MVC和MVT
MVC经典MVC模式中,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。其中,View的定义比较清晰,就是用户界面。(百度百科)V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操作的方式。M即model模型是指模型表示业务规则。在MVC的三个部件中,模原创 2021-09-25 15:14:29 · 294 阅读 · 0 评论 -
使用django-apscheduler在Django中启动定时任务
使用django-apscheduler在Django中启动定时任务安装django-apscheduler pip install django-apscheduler注册django-apscheduler在setting.py文件中注册django-apscheduler为APP INSTALLED_APPS = [ ...... 'django_apscheduler', # 定时任务 ]数据库迁移 python manage.py migrate原创 2021-09-23 15:03:27 · 1694 阅读 · 0 评论 -
Django自定义用户模型
Django自定义用户模型Django带有一个admin功能,这意味着Django默认是有用户管理类的。这点也可以从Django默认生成的表中看到。如下:mysql> SHOW TABLES;+----------------------------+| Tables_in_kylin_ksrcdb |+----------------------------+| auth_group || auth_group_permissions |原创 2021-09-07 10:46:03 · 622 阅读 · 0 评论 -
web后端实现验证码思路
验证码实现思路前端也可是生产验证码,但是前端如果生成简单的验证码,很容易就被爬虫破解,无法很好的起到一个人机识别的效果。而后端生成验证码图片发送给前端,这样的人机识别效果比较好。验证码流程如下:1. 前端发送get请求来获取验证码图片。需要前端生成uuid并把uuid的值传到后端;2. 后端收到前端的生成验证码请求,生成验证码图片和验证码内容。然后将前端传递过来的uuid值作为键,验证码内容作为值,形成一对键值对,存储在Redis中。同时根据需求设置验证码的有效期。3. 前端获取到验证码,等待用户原创 2021-09-05 19:36:18 · 2752 阅读 · 0 评论 -
Django——图书管理系统(八)
本人没有什么前端基础,对于bootstrap也了解不多。主要是跟着学习Django框架,为后面学习Django Rest Framework打一下基础。所以,这里就直接放上代码的下载链接。图书管理系统美化版原创 2021-01-25 22:02:04 · 269 阅读 · 0 评论 -
Django——图书管理系统(七)
前文,我已经介绍过了外键。本文将介绍,在带有外键的情形下,如何实现增删改查的。图书管理系统现在已经可以管理出版社了,这一步就是管理书籍。鉴于前面的一系列文章已经介绍过了出版社是如何增删改查的,本次就直接上代码,展示效果。views.py文件代码如下:from django.shortcuts import render, redirect, HttpResponsefrom app01 import models# Create your views here.def publish原创 2021-01-24 22:40:58 · 458 阅读 · 0 评论 -
Django——图书管理系统(六)
本文将讲述设置外键操作,关于外键的更多知识,大家可以看看数据库的知识。当然我依旧会在注释中做出一些解释。现在我们已经有了出版社这张表,现在我们添加书籍这张表。由于出版社和书籍之间是有关系的,我们使用外键来连接两者之间的关系。在models.py的内容如下:from django.db import models# Create your models here."""书和出版社之间是有关系的。书是出版社出版的。例如机械工业出版社出版了《数据结构和算法分析——C语言描述》这本书。那么,原创 2021-01-19 23:31:42 · 359 阅读 · 0 评论 -
Django——图书管理系统(五)
本文接着来给网页添加bootstrap样式。首先,需要在settings.py文件中加入静态文件的配置,如下所示:# 静态文件配置STATICFILES_DIRS = [BASE_DIR / 'static']然后将bootstrap3加入到项目中,并且把这个页面https://v3.bootcss.com/examples/dashboard/的body和css都拿下来。现在项目的目录应该如下所示:但是我们需要改动publisher_list.html文件的内容如下。<!D原创 2021-01-19 22:52:29 · 290 阅读 · 0 评论 -
Django——实现增删改查总结
Django实现增删改查,主要是依赖于models来实现的。下面是一个非常简单的models.py文件,该文件只有一个model,名为Publisher。models.py文件中每一个类都对应于数据库中的一张表。这个类中定义的变量就是数据库中表的相应字段。只不过现在Django给我们统一了数据库的操作,程序开发者无须考虑数据库语句的操作,也无需考虑是什么数据库。因为开发者只需要对model进行操作即可实现增删改查。from django.db import models# Create you原创 2021-01-13 23:34:56 · 8984 阅读 · 0 评论 -
Django——图书管理系统(四)
新增出版社前端页面publisher_edit.html文件的代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body> <form action="" method="post"> 出版社名称: &原创 2021-01-13 22:52:12 · 248 阅读 · 0 评论 -
Django——图书管理系统(三)
删除出版社前端页面删除出版社的前端页面是在list上做一些修改。代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><a href="/publisher_add/">新增出版社</a><table原创 2021-01-13 22:07:01 · 275 阅读 · 0 评论 -
Django——图书管理系统(二)
新增出版社前端代码前端publisher_add页面代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form action="" method="post"> 出版社名称: <input typ原创 2021-01-13 21:55:00 · 334 阅读 · 0 评论 -
Django——图书管理系统(一)
首先,我们创建一个名为bookmanager的项目。命令行如下:django-admin startproject bookmanager接着,创建一个名为app01的APP,使用命令如下:python manage.py startapp app01然后,修改settings.py文件如下所示:"""Django settings for bookmanager project.Generated by 'django-admin startproject' using原创 2021-01-10 23:49:58 · 1178 阅读 · 0 评论 -
Django——使用MySQL数据库
首先,这需要更改settings.py文件中的DATABASES。更改为如下所示即可。DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 选择数据库为MySQL 'NAME': 'login', # 数据库名称 'HOST': '127.0.0.1', #原创 2021-01-10 22:18:58 · 1354 阅读 · 0 评论 -
Django——ORM(对象关系映射)
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。——百度百科简而言之,ORM就是面向对象语言使用关系型数据库的中转站。ORM能使开发人员专注于业务逻辑,减少开发人员的负担,但是ORM的缺点也很明显,效率不高。在Django中使用ORM需要在APP下面的models.py文件中写类,原创 2021-01-10 21:30:40 · 593 阅读 · 0 评论 -
Django——使用APP
Django中的APP的功能就是使得项目更加规范化,创建APP把项目相应的功能划分成不同的模块。创建APP命令:python manage.py startapp myapp1这样就创建了一个名为myapp1的APP。你就能在你的项目下面看到一个名为myapp1的目录。创建完成APP以后,Django并不会感知到APP,需要我们在settings.py文件中进行设置。INSTALLED_APPS = [ 'django.contrib.admin', 'djan原创 2021-01-07 23:51:39 · 1004 阅读 · 2 评论