update:消息提示

This commit is contained in:
lan
2023-08-15 01:17:15 +08:00
parent 405ca31727
commit a990f92b43
45 changed files with 129 additions and 53 deletions
@@ -1,3 +0,0 @@
{
"type": "module"
}
+3
View File
@@ -8,12 +8,15 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
CardTools: typeof import('./src/components/CardTools.vue')['default']
ElAlert: typeof import('element-plus/es')['ElAlert']
ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCol: typeof import('element-plus/es')['ElCol']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDialog: typeof import('element-plus/es')['ElDialog']
ElDrawer: typeof import('element-plus/es')['ElDrawer']
ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElHeader: typeof import('element-plus/es')['ElHeader']
ElIcon: typeof import('element-plus/es')['ElIcon']
ElInput: typeof import('element-plus/es')['ElInput']
+1
View File
@@ -0,0 +1 @@
import"./base-c9c53ef4.js";import{E as c}from"./el-button-c013d252.js";import{a as r,E as s}from"./el-col-2bb883a2.js";import{an as _,m,p as u,y as p,e,w as o,x as t}from"./index-bded577e.js";import"./index-1ab675c3.js";const f={};function i(d,x){const n=s,a=r,l=c;return m(),u("main",null,[p("div",null,[e(a,null,{default:o(()=>[e(n,null,{default:o(()=>[t("1")]),_:1})]),_:1}),e(l,null,{default:o(()=>[t("1")]),_:1})])])}const b=_(f,[["render",i]]);export{b as default};
-1
View File
@@ -1 +0,0 @@
import"./base-f7494360.js";import{E as c}from"./el-button-93ad78d4.js";import{a as r,E as s}from"./el-col-0122cd51.js";import{an as _,m,p as u,y as f,e,w as o,x as t}from"./index-86483aed.js";const p={};function d(i,x){const n=s,a=r,l=c;return m(),u("main",null,[f("div",null,[e(a,null,{default:o(()=>[e(n,null,{default:o(()=>[t("1")]),_:1})]),_:1}),e(l,null,{default:o(()=>[t("1")]),_:1})])])}const N=_(p,[["render",d]]);export{N as default};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
.left-menu{margin-bottom:1rem;cursor:pointer}
-1
View File
@@ -1 +0,0 @@
import"./base-f7494360.js";import{E as c}from"./el-button-93ad78d4.js";import{a as r,E as s}from"./el-col-0122cd51.js";import{an as _,m,p as u,y as f,e,w as t,x as o}from"./index-86483aed.js";const i={};function p(d,x){const n=s,a=r,l=c;return m(),u("main",null,[f("div",null,[e(a,null,{default:t(()=>[e(n,null,{default:t(()=>[o("1")]),_:1})]),_:1}),e(l,null,{default:t(()=>[o("1")]),_:1})])])}const N=_(i,[["render",p]]);export{N as default};
+1
View File
@@ -0,0 +1 @@
import"./base-c9c53ef4.js";import{a as c,E as s}from"./el-col-2bb883a2.js";import{E as r}from"./el-card-ad43cf4b.js";import{an as l,m as f,J as m,w as e,e as t,x as a}from"./index-bded577e.js";const p={};function d(i,u){const _=r,o=s,n=c;return f(),m(n,{gutter:10},{default:e(()=>[t(o,{span:4},{default:e(()=>[t(_,{class:"left-menu"},{default:e(()=>[a("1")]),_:1})]),_:1}),t(o,{span:20},{default:e(()=>[a(" 1 ")]),_:1})]),_:1})}const V=l(p,[["render",d]]);export{V as default};
+1
View File
@@ -0,0 +1 @@
import{i as V,f as g,a9 as y,aq as b,N as w,a0 as O,A as B,r as _,B as E,s as I}from"./index-bded577e.js";function K(s){for(var n=-1,e=s==null?0:s.length,r={};++n<e;){var c=s[n];r[c[0]]=c[1]}return r}const T=s=>s===void 0,D=s=>typeof s=="boolean",F=s=>typeof s=="number",G=s=>typeof Element>"u"?!1:s instanceof Element,U=s=>V(s)?!Number.isNaN(Number(s)):!1,h="__epPropKey",z=s=>s,j=s=>g(s)&&!!s[h],q=(s,n)=>{if(!g(s)||j(s))return s;const{values:e,required:r,default:c,type:l,validator:d}=s,p={type:l,required:!!r,validator:e||d?m=>{let u=!1,f=[];if(e&&(f=Array.from(e),y(s,"default")&&f.push(c),u||(u=f.includes(m))),d&&(u||(u=d(m))),!u&&f.length>0){const $=[...new Set(f)].map(N=>JSON.stringify(N)).join(", ");b(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${$}], got value ${JSON.stringify(m)}.`)}return u}:void 0,[h]:!0};return y(s,"default")&&(p.default=c),p},H=s=>K(Object.entries(s).map(([n,e])=>[n,q(e,n)])),L=(s,n)=>{if(s.install=e=>{for(const r of[s,...Object.values(n??{})])e.component(r.name,r)},n)for(const[e,r]of Object.entries(n))s[e]=r;return s},M=(s,n)=>(s.install=e=>{s._context=e._context,e.config.globalProperties[n]=s},s),Q=s=>(s.install=w,s),R=s=>s,v="el",x="is-",i=(s,n,e,r,c)=>{let l=`${s}-${n}`;return e&&(l+=`-${e}`),r&&(l+=`__${r}`),c&&(l+=`--${c}`),l},C=Symbol("namespaceContextKey"),A=s=>{const n=s||(O()?B(C,_(v)):_(v));return E(()=>I(n)||v)},W=(s,n)=>{const e=A(n);return{namespace:e,b:(t="")=>i(e.value,s,t,"",""),e:t=>t?i(e.value,s,"",t,""):"",m:t=>t?i(e.value,s,"","",t):"",be:(t,a)=>t&&a?i(e.value,s,t,a,""):"",em:(t,a)=>t&&a?i(e.value,s,"",t,a):"",bm:(t,a)=>t&&a?i(e.value,s,t,"",a):"",bem:(t,a,o)=>t&&a&&o?i(e.value,s,t,a,o):"",is:(t,...a)=>{const o=a.length>=1?a[0]:!0;return t&&o?`${x}${t}`:""},cssVar:t=>{const a={};for(const o in t)t[o]&&(a[`--${e.value}-${o}`]=t[o]);return a},cssVarName:t=>`--${e.value}-${t}`,cssVarBlock:t=>{const a={};for(const o in t)t[o]&&(a[`--${e.value}-${s}-${o}`]=t[o]);return a},cssVarBlockName:t=>`--${e.value}-${s}-${t}`}};var X=(s,n)=>{const e=s.__vccOpts||s;for(const[r,c]of n)e[r]=c;return e};export{X as _,D as a,H as b,Q as c,z as d,v as e,T as f,G as g,K as h,F as i,M as j,q as k,A as l,R as m,C as n,U as o,W as u,L as w};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank)}.el-card{border-radius:var(--el-card-border-radius);border:1px solid var(--el-card-border-color);background-color:var(--el-card-bg-color);overflow:hidden;color:var(--el-text-color-primary);transition:var(--el-transition-duration)}.el-card.is-always-shadow{box-shadow:var(--el-box-shadow-light)}.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding);border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box}.el-card__body{padding:var(--el-card-padding)}
+1
View File
@@ -0,0 +1 @@
import{b as n,d as p,u as c,_ as i,w as m}from"./base-c9c53ef4.js";import{d as l,m as o,p as t,D as r,s,E as d,L as u,y,H as f,x as h,z as v}from"./index-bded577e.js";const w=n({header:{type:String,default:""},bodyStyle:{type:p([String,Object,Array]),default:""},shadow:{type:String,values:["always","hover","never"],default:"always"}}),S=l({name:"ElCard"}),_=l({...S,props:w,setup(C){const a=c("card");return(e,g)=>(o(),t("div",{class:r([s(a).b(),s(a).is(`${e.shadow}-shadow`)])},[e.$slots.header||e.header?(o(),t("div",{key:0,class:r(s(a).e("header"))},[d(e.$slots,"header",{},()=>[h(v(e.header),1)])],2)):u("v-if",!0),y("div",{class:r(s(a).e("body")),style:f(e.bodyStyle)},[d(e.$slots,"default")],6)],2))}});var b=i(_,[["__file","/home/runner/work/element-plus/element-plus/packages/components/card/src/card.vue"]]);const N=m(b);export{N as E};
@@ -1 +1 @@
import{b as g,e as _,_ as w,w as $,j as r,m as u,c as b}from"./base-f7494360.js";import{d as p,B as o,I as O,m as h,J as v,w as j,E as N,D as C,s as c,H as x,$ as E,A as S,f as k}from"./index-86483aed.js";const R=Symbol("rowContextKey"),K=["start","center","end","space-around","space-between","space-evenly"],B=["top","middle","bottom"],P=g({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:K,default:"start"},align:{type:String,values:B}}),A=p({name:"ElRow"}),D=p({...A,props:P,setup(f){const t=f,l=_("row"),a=o(()=>t.gutter);O(R,{gutter:a});const i=o(()=>{const e={};return t.gutter&&(e.marginRight=e.marginLeft=`-${t.gutter/2}px`),e}),m=o(()=>[l.b(),l.is(`justify-${t.justify}`,t.justify!=="start"),l.is(`align-${t.align}`,!!t.align)]);return(e,d)=>(h(),v(E(e.tag),{class:C(c(m)),style:x(c(i))},{default:j(()=>[N(e.$slots,"default")]),_:3},8,["class","style"]))}});var I=w(D,[["__file","/home/runner/work/element-plus/element-plus/packages/components/row/src/row.vue"]]);const M=$(I),J=g({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:r([Number,Object]),default:()=>u({})},sm:{type:r([Number,Object]),default:()=>u({})},md:{type:r([Number,Object]),default:()=>u({})},lg:{type:r([Number,Object]),default:()=>u({})},xl:{type:r([Number,Object]),default:()=>u({})}}),L=p({name:"ElCol"}),H=p({...L,props:J,setup(f){const t=f,{gutter:l}=S(R,{gutter:o(()=>0)}),a=_("col"),i=o(()=>{const e={};return l.value&&(e.paddingLeft=e.paddingRight=`${l.value/2}px`),e}),m=o(()=>{const e=[];return["span","offset","pull","push"].forEach(s=>{const n=t[s];b(n)&&(s==="span"?e.push(a.b(`${t[s]}`)):n>0&&e.push(a.b(`${s}-${t[s]}`)))}),["xs","sm","md","lg","xl"].forEach(s=>{b(t[s])?e.push(a.b(`${s}-${t[s]}`)):k(t[s])&&Object.entries(t[s]).forEach(([n,y])=>{e.push(n!=="span"?a.b(`${s}-${n}-${y}`):a.b(`${s}-${y}`))})}),l.value&&e.push(a.is("guttered")),[a.b(),e]});return(e,d)=>(h(),v(E(e.tag),{class:C(c(m)),style:x(c(i))},{default:j(()=>[N(e.$slots,"default")]),_:3},8,["class","style"]))}});var T=w(H,[["__file","/home/runner/work/element-plus/element-plus/packages/components/col/src/col.vue"]]);const Q=$(T);export{Q as E,M as a};
import{b as g,u as _,_ as w,w as $,d as r,m as u,i as b}from"./base-c9c53ef4.js";import{d as p,B as o,I as O,m as h,J as v,w as j,E as N,D as C,s as c,H as x,$ as E,A as S,f as k}from"./index-bded577e.js";const R=Symbol("rowContextKey"),K=["start","center","end","space-around","space-between","space-evenly"],B=["top","middle","bottom"],P=g({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:K,default:"start"},align:{type:String,values:B}}),A=p({name:"ElRow"}),D=p({...A,props:P,setup(f){const t=f,l=_("row"),a=o(()=>t.gutter);O(R,{gutter:a});const i=o(()=>{const e={};return t.gutter&&(e.marginRight=e.marginLeft=`-${t.gutter/2}px`),e}),m=o(()=>[l.b(),l.is(`justify-${t.justify}`,t.justify!=="start"),l.is(`align-${t.align}`,!!t.align)]);return(e,d)=>(h(),v(E(e.tag),{class:C(c(m)),style:x(c(i))},{default:j(()=>[N(e.$slots,"default")]),_:3},8,["class","style"]))}});var I=w(D,[["__file","/home/runner/work/element-plus/element-plus/packages/components/row/src/row.vue"]]);const M=$(I),J=g({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:r([Number,Object]),default:()=>u({})},sm:{type:r([Number,Object]),default:()=>u({})},md:{type:r([Number,Object]),default:()=>u({})},lg:{type:r([Number,Object]),default:()=>u({})},xl:{type:r([Number,Object]),default:()=>u({})}}),L=p({name:"ElCol"}),H=p({...L,props:J,setup(f){const t=f,{gutter:l}=S(R,{gutter:o(()=>0)}),a=_("col"),i=o(()=>{const e={};return l.value&&(e.paddingLeft=e.paddingRight=`${l.value/2}px`),e}),m=o(()=>{const e=[];return["span","offset","pull","push"].forEach(s=>{const n=t[s];b(n)&&(s==="span"?e.push(a.b(`${t[s]}`)):n>0&&e.push(a.b(`${s}-${t[s]}`)))}),["xs","sm","md","lg","xl"].forEach(s=>{b(t[s])?e.push(a.b(`${s}-${t[s]}`)):k(t[s])&&Object.entries(t[s]).forEach(([n,y])=>{e.push(n!=="span"?a.b(`${s}-${n}-${y}`):a.b(`${s}-${y}`))})}),l.value&&e.push(a.is("guttered")),[a.b(),e]});return(e,d)=>(h(),v(E(e.tag),{class:C(c(m)),style:x(c(i))},{default:j(()=>[N(e.$slots,"default")]),_:3},8,["class","style"]))}});var T=w(H,[["__file","/home/runner/work/element-plus/element-plus/packages/components/col/src/col.vue"]]);const Q=$(T);export{Q as E,M as a};
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
import{O as A,a6 as N}from"./index-86483aed.js";var o=(E=>(E[E.TEXT=1]="TEXT",E[E.CLASS=2]="CLASS",E[E.STYLE=4]="STYLE",E[E.PROPS=8]="PROPS",E[E.FULL_PROPS=16]="FULL_PROPS",E[E.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",E[E.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",E[E.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",E[E.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",E[E.NEED_PATCH=512]="NEED_PATCH",E[E.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",E[E.HOISTED=-1]="HOISTED",E[E.BAIL=-2]="BAIL",E))(o||{});const e=E=>{const _=A(E)?E:[E],S=[];return _.forEach(T=>{var r;A(T)?S.push(...e(T)):N(T)&&A(T.children)?S.push(...e(T.children)):(S.push(T),N(T)&&((r=T.component)!=null&&r.subTree)&&S.push(...e(T.component.subTree)))}),S};export{o as P,e as f};
import{O as A,a6 as N}from"./index-bded577e.js";var o=(E=>(E[E.TEXT=1]="TEXT",E[E.CLASS=2]="CLASS",E[E.STYLE=4]="STYLE",E[E.PROPS=8]="PROPS",E[E.FULL_PROPS=16]="FULL_PROPS",E[E.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",E[E.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",E[E.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",E[E.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",E[E.NEED_PATCH=512]="NEED_PATCH",E[E.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",E[E.HOISTED=-1]="HOISTED",E[E.BAIL=-2]="BAIL",E))(o||{});const e=E=>{const _=A(E)?E:[E],S=[];return _.forEach(T=>{var r;A(T)?S.push(...e(T)):N(T)&&A(T.children)?S.push(...e(T.children)):(S.push(T),N(T)&&((r=T.component)!=null&&r.subTree)&&S.push(...e(T.component.subTree)))}),S};export{o as P,e as f};
+7 -4
View File
@@ -3,10 +3,13 @@
<head>
<meta charset="UTF-8">
<link rel="icon" href="/logo_small.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FileCodeBox</title>
<script type="module" crossorigin src="/assets/index-86483aed.js"></script>
<link rel="stylesheet" href="/assets/index-7bc26ac6.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="description" content="{{description}}">
<meta name="keywords" content="{{keywords}}" />
<meta name="generator" content="FileCodeBox2.0" />
<title>{{title}}</title>
<script type="module" crossorigin src="/assets/index-bded577e.js"></script>
<link rel="stylesheet" href="/assets/index-b9599089.css">
</head>
<body>
<div id="app"></div>
+6 -3
View File
@@ -2,9 +2,12 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/logo_small.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>FileCodeBox</title>
<link rel="icon" href="/assets/logo_small.png">
<meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta name="description" content="{{description}}">
<meta name="keywords" content="{{keywords}}" />
<meta name="generator" content="FileCodeBox2.0" />
<title>{{title}}</title>
</head>
<body>
<div id="app"></div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

+3 -1
View File
@@ -1,7 +1,7 @@
<template>
<el-container style="height: 100vh;width: 100vw;position: relative;user-select: none">
<el-header>
<el-menu mode="horizontal" router default-active="/admin">
<el-menu mode="horizontal" router :default-active="route.path">
<el-menu-item v-for="menu in menus" :index="menu.path" :key="menu.path">{{menu.name}}</el-menu-item>
</el-menu>
</el-header>
@@ -14,6 +14,8 @@
import { useDark } from '@vueuse/core';
import { ref } from "vue";
const isDark = useDark()
import { useRoute } from 'vue-router';
const route = useRoute();
const menus = ref([
{
name: '文件管理',
+2 -1
View File
@@ -1,6 +1,6 @@
<template>
<main>
<el-table stripe :data="tableData" style="width: 100%">
<el-table size="large" stripe :data="tableData" style="width: 100%">
<el-table-column prop="code" label="取件码" />
<el-table-column prop="prefix" label="文件前缀" />
<el-table-column prop="suffix" label="后缀" />
@@ -11,6 +11,7 @@
</el-table-column>
<el-table-column prop="used_count" label="已用次数" />
<el-table-column prop="expired_count" label="可用次数" />
<el-table-column prop="expired_at" label="到期时间" />
<el-table-column prop="file_path" label="文件路径" />
<el-table-column>
<template #header>
+70 -7
View File
@@ -1,12 +1,75 @@
<template>
<main>
<div>
<el-row>
<el-col>1</el-col>
</el-row>
</div>
</main>
<el-form>
<el-form-item size="large" label="网站名称">
<el-input v-model="config.name" />
</el-form-item>
<el-form-item size="large" label="网站描述">
<el-input v-model="config.description" />
</el-form-item>
<el-form-item size="large" label="关键词" style="letter-spacing: 0.3rem">
<el-input v-model="config.keywords" />
</el-form-item>
<el-form-item size="large" label="开启上传">
<el-select v-model="config.openUpload">
<el-option label="开启游客上传" value="1" />
<el-option label="关闭游客上传" value="0" />
</el-select>
</el-form-item>
<el-form-item size="large" label="文件大小">
<el-input v-model="config.uploadSize" />
<template #append>Bit</template>
<small>最大文件大小单位:bit),1mb=1 * 1024 * 1024</small>
</el-form-item>
<el-form-item size="large" label="上传限制">
<span style="display: flex;height: 38px">
<span style="margin-right: 0.4rem"></span>
<el-input v-model="config.uploadMinute" />
<span style="width: 200px;margin-left: 0.4rem">分钟</span>
</span>
<span style="display: flex;height: 38px">
<span style="width:3rem;margin-right: 0.4rem">上传</span>
<el-input v-model="config.uploadCount" />
<span style="width: 200px;margin-left: 0.4rem">个文件</span>
</span>
</el-form-item>
<el-form-item size="large" label="错误限制">
<span style="display: flex;height: 38px">
<span style="margin-right: 0.4rem"></span>
<el-input v-model="config.uploadMinute" />
<span style="width: 200px;margin-left: 0.4rem">分钟</span>
</span>
<span style="display: flex;height: 38px">
<span style="width:3rem;margin-right: 0.4rem">允许</span>
<el-input v-model="config.uploadCount" />
<span style="width: 200px;margin-left: 0.4rem">次错误</span>
</span>
</el-form-item>
<el-form-item>
<el-button type="primary" style="margin: auto">保存</el-button>
</el-form-item>
</el-form>
</template>
<script lang="ts" setup>
import {ref} from "vue";
const config = ref({
name: '',
description: '',
keywords: '',
openUpload: '1',
uploadSize: '1',
uploadMinute: '1',
uploadCount: '1',
});
</script>
<style lang="scss">
.left-menu {
margin-bottom: 1rem;
cursor: pointer;
text-align: center;
font-weight: bold;
font-size: 1rem;
letter-spacing: 0.4rem;
}
</style>
+1 -1
View File
@@ -47,7 +47,7 @@ app.include_router(admin_api)
@app.get('/')
async def index():
return HTMLResponse(content=open('./fcb-fronted/dist/index.html', 'r', encoding='utf-8').read(), status_code=200)
return HTMLResponse(content=open('./fcb-fronted/dist/index.html', 'r', encoding='utf-8').read().replace('{{title}}', 'FileCodeBox'), status_code=200)
if __name__ == '__main__':