django知识点整理

站点Model管理

xadmin可以使用的页面样式控制基本与Django原生的admin一致。

list_display 控制列表展示的字段
search_fields 控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询
list_filter 可以进行过滤操作的列
ordering 默认排序的字段
readonly_fields 在编辑页面的只读字段
exclude 在编辑页面隐藏的字段
list_editable 在列表页可以快速直接编辑的字段
show_detail_fileds 在列表页提供快速显示详情信息
refresh_times 指定列表页的定时刷新
list_export 控制列表页导出数据的可选格式
show_bookmarks 控制是否显示书签功能
data_charts 控制显示图标的样式
list_per_page=2分页
制作图表设计的字段是: data_charts(控制显示图标的样式)

title 控制图标名称
x-field 控制x轴字段
y-field 控制y轴字段,可以是多个值
order 控制默认排序

model_icon 控制菜单的图标

self.files

后台model对象保存涉及函数:可以修改定制

  1. admin 如下方式
    def save_models(self, request, obj, form, change):
    if not change:
    obj.author = request.user
    obj.save()

  2. xadmin 如下方式

    def save_models(self):
    obj = self.new_obj
    request = self.request
    obj.author = str(request.user)
    obj.save()

    def delete_model(self,obj):
    #obj 删除数据对象列表类型
    # obj = self.obj
    #相应的操作
    obj.delete()

GitLib代码提交

417 git clone http://code.cbpmgt.com/****/sftp_admin.git
418 ls
419 cd sftp_admin/
420 ls
421 unzip ../Admin1.zip
422 ls
423 git add .
424 git commit -a -m "第一次提交"
425 git push

xadmin后台 美化图标库 http://fontawesome.dashgame.com/

paramiko使用

import os
import paramiko
from django.conf import settings

local_path = os.path.join(settings.MEDIA_ROOT,str(file.file_path))
print(local_path+' '+remote_path)
for server in servers:
client = paramiko.Transport((server.inner_ip_addr, 22))
client.connect(username='root',password="123456")
sftp=paramiko.SFTPClient.from_transport(client)
sftp.put(local_path,remote_path)
sftp.close()
client.close()

centos7 安装python虚拟环境

  1. 创建虚拟环境命令:
    sudo pip install virtualenv 或 sudo pip install virtualenv
    sudo pip3 install virtualenvwrapper 或 sudo pip3 install virtualenvwrapper (为了命令更好用)

  2. 查找virtualenvwrapper所在的路径(记得加.sh要不然查到出来的路径不正确)

    whereis virtualenvwrapper.sh或 find / -name virtualenvwrapper.sh

  3. 创建一个管理所有virtualenvwrapper的存放文件夹,一般建议在home目录下
    例:mkdir /home/rock/.virtualenvs

  4. 查找 .bashrc 配置文件所在路径
    一般在/root/.bashrc

添加以下两句:
export WORKON_HOME=路径/.virtualenvs
source virtualenvwrapper.sh的存放路径
保存退出,并执行
source 路径/.bashrc(激活更新配置)

例:
export WORKON_HOME=/home/rock/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

配置好后要执行以下命令才生效:
source .bashrc

  1. 创建跟退出
    创建新虚拟环境:mkvirtualenv 名称
    例:mkvirtualenv python001

    退出环境:deactivate
    如果想指定一个python3来运行的虚拟环境

    mkvirtualenv python002 -p python路径
    例:mkvirtualenv python002 -p /usr/bin/python3

  2. 快速激活虚拟环境

    workon 虚拟环境名称

    例:workon python001

https://www.jianshu.com/p/52aa46f61716 xadmin数据excel导入

django模板语言

render 传给前端的变量

可以在html 里边{{ 变量名 }} 直接引用; 支持列表递归{% for i in items %};

  1. 对于字典,可以有下列用法:

    {% for row in user_dict.keys %}
    {% for row in user_dict.values %}
    {% for row in user_dict.items %} 得到元组
    {% for k,row in user_dict.items %}
      

  2. {{k}}-{{row}}
  3. django过滤器|截断字符长度

    {{ post.title | slice:":50" }}

  4. 如果前端 js 需要字符类型的话;
    python 字符串 序列化后,前端正则处理
    后端
    json.dumps(变量) 序列化
    前端
    正则去除乱码字符:
    console.log({{ sources_json }})
    reu = new RegExp(""", "g");

django后台在删除字段时候,不会自动删除文件,但是django提供了方法供我们删除,pre_delete,post_delete

from django.db.models.signals import pre_delete
from django.dispatch.dispatcher import receiver

class Shell_file(models.Model):
file_path = models.FileField(upload_to='Script/')
file_name = models.CharField(max_length=100)

@receiver(pre_delete,sender=Shell_file)
def model_delete(sender,instance,**kwargs):
instance.file_path.delete(True)

class Article(models.Model):
title = models.CharField(max_length=80)
text = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
attach = models.CharField(max_length=255) # 文件上传后保存在服务器上的路径

@receiver(post_delete, sender=Article)
def delete_upload_files(sender, instance, **kwargs):
files = getattr(instance, 'attach', '')
if not files:
return
fname = os.path.join(settings.MEDIA_ROOT, files)
if os.path.isfile(fname):
os.remove(fname)

django xadmin后台字段长度控制

在model 类内定义函数限制字数,然后替换list_display = [ 'pub_key' ]添加为我们添加的函数名

public_key = models.TextField(max_length=255,verbose_name="公钥",null=True,blank=True)

def pub_key(self):
if len(str(self.public_key)) > 100:
return '{}...'.format(str(self.public_key)[0:100])
else:
return str(self.public_key)
pub_key.allow_tags = True

django跨域请求:前后段分离涉及

from django.views.decorators.csrf import csrf_exempt

from django.views.decorators.http import require_POST
from django.http import HttpResponse, JsonResponse# JsonResponse 用于返回 JSON 数据
在函数上方引入装饰器,对指定的函数不检查csrf

posted @ 2019-08-26 18:26  juila  阅读(153)  评论(0)    收藏  举报