首页
壁纸
关于
推荐
战略合作
Google
主题Joe
Search
1
涂鸦设备本地化接入(涂鸦电表)
13 阅读
2
CentOS 定时同步指定文件到ftp
6 阅读
3
laydate输入日期年月日时分,以十分钟为间隔,不需要秒
5 阅读
4
记一次Django_cas_ng数据库migrate错误
5 阅读
5
Centos7 安装python3并配置pip
4 阅读
运维
Windows
Linux
MacOS
Android
vmware
开发
Python
Go
Html
Electron
智家
HomeAssistant
ESPhome
Unraid
群晖
网络相关
登录
Search
标签搜索
运维
Linux
Python
django
智能家居
Nginx
MACos
brew
layui
cas
群晖
nas
zabbix
vim
JDK
sonar
jenkins
Nexus
转发
mysql
Ruike
累计撰写
29
篇文章
累计收到
109
条评论
首页
栏目
运维
Windows
Linux
MacOS
Android
vmware
开发
Python
Go
Html
Electron
智家
HomeAssistant
ESPhome
Unraid
群晖
网络相关
页面
壁纸
关于
推荐
战略合作
Google
主题Joe
搜索到
8
篇与
的结果
2022-08-16
记一次Django_cas_ng数据库migrate错误
最开始migrate时开始报错django.db. utils.OperationalError: ( 1071,'Specified key was too long; max key length is 767 bytes')诊断出问题点在于django_cas_ng的model生成文件上字符超限实际上,是数据库字符集的问题。发现现有的是utf8mb4,这个字符集虽能兼容utf-8,且支持emoji表情,但是所有字符的编码就变成了4字节的,所以导致数据字段过长。所以我需要修改mysql数据表的默认字符集。找到配置文件my.cnf, 添加如下项[mysql] default-character-set = utf8 [mysqld] character-set-server = utf8重启mysql,重新migrate Done二、如果继续报错,请考虑调小数值vim *_venv/lib/python3.7/site-packages/django_cas_ng/migrations/0002_auto*.py将两个1024改成如768,migrate后改回1024
2022年08月16日
5 阅读
21 评论
0 点赞
2020-05-01
python 判断数据类型
Python 判断数据类型有type和isinstance基本区别在于:type():不会认为子类是父类 isinstance():会认为子类是父类类型 class Color(object): pass class Red(Color): pass print type(Color()) == Color print type(Red()) == Color print isinstance(Red(),Color)执行结果如下:D:\software\Python2.7.13\python.exe PythonStudy/test.py True False True用isinstance判断mongDB中的一些数据类型:字符串、int、long、float - isinstance(data, (int, str, types.LongType, float)) 时间类型 - isinstance(data, datetime.datetime) 布尔类型 - isinstance(data, (bool)) 字典类型 - isinstance(data, (dict)) 数组 - isinstance(data, (list)) unicode - isinstance(data, unicode) mongo obJect - isinstance(data, bson.objectid.ObjectId) 可以引入types模板,获取数据类型: inport types types取值: BooleanType BufferType BuiltinFunctionType BuiltinMethodType ClassType CodeType ComplexType DictProxyType DictType DictionaryType EllipsisType FileType FloatType FrameType FunctionType GeneratorType GetSetDescriptorType InstanceType IntType LambdaType ListType LongType MemberDescriptorType MethodType ModuleType NoneType NotImplementedType ObjectType SliceType StringType StringTypes TracebackType TupleType TypeType UnboundMethodType UnicodeType XRangeType
2020年05月01日
1 阅读
0 评论
0 点赞
2020-04-09
Django templay 配置全局变量
setting.pyTEMPLATES0['context_processors']最后面添加一行:'Tools.context_processors.app_name',如下:TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'Tools.context_processors.app_name', ], }, }, ]同时,setting.py添加配置:APP_NAME=‘你网站的名称’Tools.context_processors.py#!/usr/bin/env python3 # -*- coding:utf-8 -*- # @Author: Ruike # @Time: 2019-10-20 23:38 # @File: context_processors.py.py # @Project: setting变量前端传递模版 from django.conf import settings # 项目名称 def app_name(request): return {'APP_NAME': settings.APP_NAME}模版引用:{{ APP_NAME }}
2020年04月09日
2 阅读
0 评论
0 点赞
2019-05-27
Django-cas-ng模块的使用:
详情查看官方文档Pypi一、安装与配置1、安装模块Install with pip:pip install django-cas-ngInstall the latest code:pip install https://github.com/mingchen/django-cas-ng/archive/master.zip2、配置引用vim settings.py INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 引用APP 'django_cas_ng', ... ) MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', # 中间件 'django_cas_ng.middleware.CASMiddleware', ... ) # 注册Backends AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend', 'django_cas_ng.backends.CASBackend', ) CAS_SERVER_URL = 'https://auth.bigo.sg/cas/' CAS_LOGOUT_COMPLETELY = True CAS_VERSION = 3配置路由vim urls.py新增url: from django.conf.urls import include, url import django_cas_ng.views urlpatterns = [ #... url(r'^accounts/login$', django_cas_ng.views.LoginView.as_view(), name='cas_ng_login'), url(r'^accounts/logout$', django_cas_ng.views.LogoutView.as_view(), name='cas_ng_logout'),url(r'^$', index), #... ]同步数据库python manage.py migrate django_cas_ng
2019年05月27日
1 阅读
0 评论
0 点赞
2019-05-14
Django之分页与搜索分页
一、分页代码如下vim views.pyfrom django.core.paginator import Paginator def property_list(request): messages = models.ProdDetail.objects.all() limit = 25 paginator = Paginator(messages, limit) # 按每页25条分页 page = request.GET.get('page', '1') # 默认跳转到第一页 result = paginator.page(page) return render(request, 'lists.html', {'contacts': result})vim lists.html<div class="layui-card-body "> <div class="page"> <div> {% if contacts.has_previous %} <a class="prev" href="?page=1"><<</a> <a class="prev" href="?page={{ contacts.previous_page_number }}">上一页</a> {% else %} <a class="prev"><<第一页</a> {% endif %} <span class="current">第{{ contacts.number }}页/共{{ contacts.paginator.num_pages }}页</span> {% if contacts.has_next %} <a class="next" href="?page={{ contacts.next_page_number }}">下一页</a> <a class="next" href="?page={{ contacts.paginator.num_pages }}">>></a></div> {% else %} <a class="next-off">最后页>></a> {% endif %} </div> </div>2、搜索的分页在进行搜索时,下一页时因为是新的页面,所以搜索参数并没有传到新的页面,导致结果没回传,所以我们需要一个方法来传递搜索参数。代码如下:vim views.pydef property_list(request): # 接受get参数 userid = request.GET.get('userid') name = request.GET.get('name') prodsn = request.GET.get('prodsn') search = {} getmathod = '' if userid: # 模糊搜索 search['user_id__icontains'] = userid # 搜索参数的保存传递 getmathod += ('&userid=%s' % userid) if name: search['name__icontains'] = name getmathod += ('&name=%s' % name) if prodsn: search['s_sn__icontains'] = prodsn getmathod += ('&prodsn=%s' % prodsn) messages = models.ProdDetail.objects.filter(**search) limit = 25 paginator = Paginator(messages, limit) # 按每页25条分页 page = request.GET.get('page', '1') # 默认跳转到第一页 result = paginator.page(page) # 将原来的get请求封装后返回给前端 return render(request, 'lists.html', {'contacts': result, 'getmathod': getmathod})将getmathod传递给前端,加在page href后:=={{ getmathod }}==vim lists.html{% if contacts.has_previous %} <a class="prev" href="?page=1{{ getmathod }}"><<</a> <a class="prev" href="?page={{ contacts.previous_page_number }}{{ getmathod }}">上一页</a> {% else %} <a class="prev"><<第一页</a> {% endif %} <span class="current">第{{ contacts.number }}页/共{{ contacts.paginator.num_pages }}页</span> {% if contacts.has_next %} <a class="next" href="?page={{ contacts.next_page_number }}{{ getmathod }}">下一页</a> <a class="next" href="?page={{ contacts.paginator.num_pages }}{{ getmathod }}">>></a></div> {% else %} <a class="next-off">最后页>></a> {% endif %}
2019年05月14日
3 阅读
0 评论
0 点赞
1
2