Redis数据
Redis数据Redis数据结构
Redis时key-value的数据结构,每条数据都是一个键值对
键的类型必须是字符串,但是键不允许重复
值得类型分为五种:
string:字符串
hash:哈希,值中也是键值对得数据
list:列表
set:集合,集合内部的元素不允许重复
zset:有序集合,集合的内部元素不允许重复
数据类型除了以下命令,redis还包括很多其它的命令,详见参考:https://doc.redisfans.com
键命令1234567891011121314151617# 查找数据库中有哪些键keys 正则表达式# 判断键是否存在,存在则返回1,否则返回0exists key1# 判断键对应的value类型type key1# 删除键及对应的值del key1 key2 ...# 追加键的过期时间,如果不设定则该key-value将一直存在expire key seconds# 查看键的剩余有效时间ttl key1
String类型字符串类型是Redis中最为基础的数据存储类型,在redis中是二进制安全的,它可以接受任何格式的数据,且其字符串类型的valu ...
Redis服务与搭建
Redis服务与搭建简介nosql数据库
不支持sql语法
存储结构与传统关系型数据库中的关系表不同,nosql中存储的数据都是kv形式
nosql的世界中没有一种通用的语言,每种sql都有自己的语法和api,以及擅长的业务场景
Redis、Mongodb都属于nosql数据库
sql数据库适用于关系特别复杂的数据库查询,nosql反之
sql数据库对事务的支持十分完善,nosql基本不支持事务
Redis特点
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载使用
Redis不仅仅支持key-value类型的数据,同时还提供list、set、zset、hash等数据结构的存储
Redis支持数据的备份,即master-slave模式的数据备份
Redis应用场景
用作缓存,Redis的所有数据都是放在内存中的(内存数据库)
可在某些特定应用场景下替代传统数据库,比如社交类的应用
在大型系统中,巧妙的实现一些特定的功能
Redis安装直装12# 直接安装sudo apt-get install redis-server
手装
生成安装
12345 ...
Django自定义用户表
Django自定义用户表背景有时候我们需要自己定义django用户表,而django也提供了这样的接口供我们使用
使用
在项目settings.py文件中添加配置项
123# django认证系统使用的模型类,# 当配置该选项后,创建迁移时,就不会再使用默认的auth_user,而是使用该配置指向的数据表AUTH_USER_MODEL = 'users.User'
在创建User表的模型类的时候,让其继承AbstractUser类
123456789101112# 导入AbstractUser类from django.contrib.auth.models import AbstractUser# BaseModel是我们自定义的模型基类,里面定义了所有表都有的字段信息# 通过该方法生成User表后,django就不会再生成默认的django_user表了class User(AbstractUser, BaseModel): '''用户个人信息表''' class Meta: ...
Django使用全文搜索引擎
Django全文搜索引擎背景
解决问题
网站首页提供了搜索框,这样的搜索框是为了在数据库进行数据检索的,但是如果直接在数据库中使用like进行查询数据会非常的慢,因此考虑到引入了全文检索的概念,借助搜索引擎能够对文字进行分词,并构建起文字对应的数据库中信息的关系,所以要比模糊查询的效率高很多。
如果我们自己使用搜索引擎,也是可以实现全文检索,但是其中可能要繁琐一些,所以我们可以借用已经写好的全文搜索框架,然后搭配对应的搜索引擎即可
使用框架
django-haystack:全文搜索框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,参考:http://haystacksearch.org/
whoosh:纯python编写的搜索引擎,性能偏低,但是很稳定,参考:https://whoosh.readthedocs.io/en/latest/
jieba:免费的中文分词包,中文分词包也有收费的,可以自取哟。
使用
安装环境包
1234567# django-haystack依赖环境pip install setuptools_scm ...
DJango后台管理
Django后台管理使用
本地化
123# settings.py文件LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'Asia/Shanghai'
创建超级管理员
1python manage.py createsuperuser
注册模型类
1234567# 应用对象的admin.py文件中from wuxiang.models import Book, Heroclass HeroAdmin(admin.ModelAdmin): list_display = ['hname', 'hcomment', 'hgender', 'hook'] admin.site.register(Hero, HeroAdmin)
列表页
修改后台列表页显示内容
1234567# 修改应用对象的models.py文件class Book(models.Model): btitle = models.CharField(max_l ...
Django中间件
Django中间件背景
获取用户访问的地址信息
12# 通过request的META属性获取,里面有一个REMOTE_ADDRaddr = requesst.META['REMOTE_ADDR']
中间件的作用
中间件是程序在使用视图前调用的方法,借用这个我们可以介入用户请求和处理的内部
使用中间件
在对应应用的下面新建一个中间件文件【middleware.py】,名字可以自己定,但一般都叫这个
1touch middleware.py
编辑中间件【middleware.py】的内容
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950# 设置屏蔽用户的IPfrom django.http import HttpResponse# 需要继承MiddlewareMixin, 不然会报错from django.utils.deprecation import MiddlewareMixin# 切记中间件的函数名称就叫process_v ...
Django图片上传与分页
Django图片上传与分页配置
新建上传目录
12# 这个位置可自己定,一般放在根目录下新建一个media文件夹mkdir media
配置上传文件保存目录
12# 项目settings.py文件中新增配置项MEDIA_ROOT = os.path.join(BASH_DIR, 'media')
后台上传图片
设计模型类
1234# 在对应应用下的models.py文件中注册图片管理class PIC_Upload(models.Model): # upload_to:表示图片上传的路径,该路径是相对于settings.py文件media_root配置 pic = models.ImageField(upload_to='picture')
在项目的管理后台进行注册
12# 修改app对应的admin.py文件,注册图片的那张表admin.site.register(PIC_Upload)
通过ImageField设置图片字段,它会自动的检测上传的内容是不是图片格式
【问题解决】当生成迁移文件的时候,可能会提示没有任何修 ...
Django静态、中间、后台
Django静态、中间、后台静态文件配置静态文件指的是js、css、图片文件,django中配置方式如下:
在根目录下新建静态文件夹static
1mkdir static
修改项目settings.py配置文件的静态目录
12345# 设置访问静态文件的urlSTATIC_URL = '/static/'# 设置静态文件所在的物理目录STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]
静态文件的查找顺序
先在【STATICFILES_DIR】目录下查找文件
如果第一步查找不到,则进入应用当中的【static】文件夹进行查找指定的文件
若上述都查找不到,则报错
模板中静态文件的动态配置12345678910111213<!DOCTYPE html>{# 使用前需要先导入,如果同时还要导入extends,则优先导入extends#}{% load static %}<html lang="en">& ...