Xadmin页面定制——后台页面自定义

等同于view的class

里边可以写

get 和post

后台页面自定义主要在adminx.py下,相关代码如下:

from xadmin.views.base import CommAdminView
from django.db.models import Count
from pure_pagination import Paginator,PageNotAnInteger
from .models import Sanlv_data
from django.views.generic.base import View
import os,io
from django.http import FileResponse
from django.shortcuts import render,HttpResponse,Http404,render_to_response,redirect
from .sanlv import sanlv
from django.contrib import messages
from datetime import datetime

class Sanlv_dataAdmin(object):

    # 指向自定义的页面
    object_list_template = 'automation/sanlv.html'

    # 重写方法,把要展示的数据更新到 context
    def get_context(self):
        context = CommAdminView.get_context(self)
        # date_list = FixedStation.objects.exclude(state="end").dates('default_time', 'day', order='DESC')
        # streets = Street.objects.all()
        #
        # year = self.request.GET.get('year', '')
        # month = self.request.GET.get('month', '')
        # day = self.request.GET.get('day', '')
        # street_id = self.request.GET.get('street', '0')
        # if street_id != 0:
        #     date_list = date_list.filter(street_id=int(street_id))
        # if year:
        #     print(year)
        #     #response = Download_data(self.request, year, month, day)
        #     re = Download_excel(street_id,year, month, day)
        #
        # try:
        #     page = self.request.GET.get('page',1)
        # except PageNotAnInteger:
        #     page = 1
        # p = Paginator(date_list, 10, request=self.request)
        # date_lists = p.page(page)
        context.update(
            {
                'title': '最新通知',
                'test': '考勤',
                # 'date_lists': date_lists,
                # 'streets': streets,
                # 'street_id':street_id,
            }
        )
        return context


    def post(self, request):
        FILE_sanlv = request.FILES.get('f_upload_1')#获得文件
        # print(str(FILE_sanlv).split('.'))判断文件格式
        print(os.path.splitext(str(FILE_sanlv))[1])
        #判断文件是否为.xls格式
        if os.path.splitext(str(FILE_sanlv))[1] != '.xls':
            messages.error(request, "文件格式错误,请上传xls的excel")
            return redirect('http://192.168.1.3:8000/xadmin/projectdaily/sanlv_data/')
        else:
            path = os.getcwd()  # 获取当前目录  F:\2.数据平台\SmallOA20210302
            print(path)
            files_url = path + '\Apps\projectdaily\三率表.xls'
            if os.path.exists(files_url):  # 如果文件存在
                # 删除文件,可使用以下两种方法。F:\2.数据平台\SmallOA20210302\Apps\projectdaily\三率表.xls
                os.remove(files_url)
            #新任务执行
            error = sanlv.read_write(FILE_sanlv)
            if error == '':
                allfiles = os.listdir(path + '\Apps\projectdaily')  # 获取当前目录  F:\2.数据平台\SmallOA20210302
                if allfiles:
                    print(allfiles)
                    file = open(files_url, 'rb')
                    try:
                        response = FileResponse(file)
                        response['Content-Type'] = 'application/octet-stream'
                        response['Content-Disposition'] = 'attachment;filename="{0}{1}{2}{3}"'.format(datetime.now().year,datetime.now().month,datetime.now().day,'三率.xls').encode('utf-8', 'ISO-8859-1')
                        response['messages'] = "执行成功,等待下载"
                        # response.write(context)
                        # messages.success(request, "执行成功,等待下载")
                        return response

                    except Exception:
                        messages.error(request, "未生成三率表格")
                        raise Http404
            else:
                messages.error(request, error)
                return redirect('http://192.168.1.3:8000/xadmin/projectdaily/sanlv_data/')

#进行注册
xadmin.site.register(Sanlv_data, Sanlv_dataAdmin)

参考链接:

https://www.cnblogs.com/pgxpython/p/10242748.html

https://www.toutiaoweb.com/p/1147617.html

猜你喜欢

转载自blog.csdn.net/qq_15028721/article/details/113814552
今日推荐