├── .gitignore
├── README.md
├── articles
├── coding.md
├── second_brains.md
└── tools.md
├── django_demo_with_frontend_and_backend
├── .DS_Store
├── appfront
│ ├── .babelrc
│ ├── .editorconfig
│ ├── .gitignore
│ ├── .postcssrc.js
│ ├── README.md
│ ├── config
│ │ ├── dev.env.js
│ │ ├── index.js
│ │ └── prod.env.js
│ ├── index.html
│ ├── package-lock.json
│ ├── package.json
│ ├── src
│ │ ├── App.vue
│ │ ├── api
│ │ │ ├── api.js
│ │ │ └── index.js
│ │ ├── assets
│ │ │ └── logo.png
│ │ ├── components
│ │ │ └── HelloWorld.vue
│ │ ├── main.js
│ │ └── router
│ │ │ └── index.js
│ └── static
│ │ └── .gitkeep
├── book_demo
│ ├── .DS_Store
│ ├── .idea
│ │ ├── book_demo.iml
│ │ ├── inspectionProfiles
│ │ │ └── profiles_settings.xml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── workspace.xml
│ ├── book_demo
│ │ ├── __init__.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── books
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── migrations
│ │ │ ├── 0001_initial.py
│ │ │ └── __init__.py
│ │ ├── models.py
│ │ ├── serializer.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── dist
│ │ ├── index.html
│ │ └── static
│ │ │ ├── css
│ │ │ ├── app.11378086ec3ae2b554b35d16a727b7d2.css
│ │ │ └── app.11378086ec3ae2b554b35d16a727b7d2.css.map
│ │ │ └── js
│ │ │ ├── app.6776c8184735e212af31.js
│ │ │ ├── app.6776c8184735e212af31.js.map
│ │ │ ├── manifest.2ae2e69a05c33dfc65f8.js
│ │ │ ├── manifest.2ae2e69a05c33dfc65f8.js.map
│ │ │ ├── vendor.16eedc6a3e55c349cabe.js
│ │ │ └── vendor.16eedc6a3e55c349cabe.js.map
│ └── manage.py
└── readme.md
└── pics
├── bkflow-dmn.png
├── bkflow-feel.png
├── dark_reader.png
├── django_and_vue.png
├── django_swagger.png
├── drf_ser.png
├── fliki.png
├── git.png
├── hey.png
├── homepage.png
├── homepage2.png
├── image-1.png
├── image-10.png
├── image-2.png
├── image-3.png
├── image-4.png
├── image-5.png
├── image-6.png
├── image-7.png
├── image-8.png
├── image-9.png
├── image.png
├── omnivore.png
├── python_code_optimization.png
├── python_project.png
├── python_tips.png
├── qrcode.png
├── quick_reference.png
├── second_brain.png
├── shuangping.png
├── slidev.png
├── superfile.png
├── tiny_rdm.png
├── webpilot.png
├── week_plan.png
└── yaml-anchor.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | # dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
131 |
132 | # wls personal
133 | .DS_Store
134 | .idea
135 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Blogs & Code
2 |
3 | ### 本仓库分享一些文章以及相关的样例代码
4 |
5 | ### 文章合集
6 | - [第二大脑](./articles/second_brains.md)【完结】
7 | - [高效工具](./articles/tools.md)【持续更新中...】
8 | - [编程相关](./articles/coding.md)【持续更新中...】
9 |
10 | ### 公众号:
11 | 
12 |
13 | ### 如果觉得不错,给个 star 鼓励一下
14 |
--------------------------------------------------------------------------------
/articles/coding.md:
--------------------------------------------------------------------------------
1 | # 文章列表
2 |
3 | #### Python 进阶必须了解的 7 个 tips
4 |
5 | 
6 |
7 | ----
8 |
9 | #### 【Python 进阶】必须了解的 Python 项目工程化开发指南
10 |
11 | 
12 |
13 | ----
14 |
15 | #### 记一次平平无奇的 Python 代码优化
16 |
17 | 
18 |
19 | ----
20 |
21 | #### 【开源推荐】一款基于 Python 的决策引擎工具库:bkflow-dmn
22 |
23 | 
24 |
25 | ----
26 |
27 | #### 【开源推荐】一款基于 Python 的 FEEL 语法表达式解析库:bkflow-feel
28 |
29 | 
30 |
31 | ----
32 |
33 | #### 【工具推荐&定制开发】一款轻量的批量web请求命令行工具:hey
34 |
35 | 
36 |
37 | ----
38 |
39 | #### 【Yaml进阶】Yaml 锚点(引用)用法详解
40 |
41 | 
42 |
43 | ----
44 |
45 | #### 【程序员必备技能】Vim入门指南
46 |
47 | 
48 |
49 | ----
50 |
51 | #### Django项目测试利器——django-test-toolkit
52 |
53 | [仓库代码](https://github.com/TencentBlueKing/django-test-toolkit)
54 |
55 | 
56 |
57 | ---
58 |
59 | #### 【Django第三方库】一款简单易接入的顶部通知栏
60 |
61 | [样例代码](https://github.com/normal-wls/django-top-notify)
62 |
63 | 
64 |
65 | ----
66 |
67 | #### AnnotationAutoSchema:让FBV通过函数注释快速接入Swagger UI
68 |
69 | 
70 |
71 | ----
72 |
73 | #### Django Rest Framework 可自定义读写 Serializer Field实现(附代码)
74 |
75 | 
76 |
77 | ----
78 |
79 | #### 【手把手系列】Django如何快速配置Swagger UI
80 |
81 | 
82 |
83 | ----
84 |
85 | #### 手把手Django+Vue前后端分离开发入门(附demo)
86 |
87 | [样例代码](../django_demo_with_frontend_and_backend)
88 |
89 | 
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/articles/second_brains.md:
--------------------------------------------------------------------------------
1 | # 文章列表
2 |
3 | #### 通过 Obsidian 打造第二大脑个人实践
4 |
5 | 
6 |
7 | ----
8 |
9 | #### 【工具推荐】Omnivore: 一款好看好用,可集成到Obsidian的稍后阅读软件
10 |
11 | 
12 |
13 | ----
14 |
15 | #### 【工具最佳实践】打造一个专属的 Obsidian 个性化首页 (二):集成一个好看的热力图
16 |
17 | 
18 |
19 | ----
20 |
21 | #### 【工具最佳实践】打造一个专属的 Obsidian 个性化首页
22 |
23 | 
24 |
25 | ----
26 |
27 | #### 【工具最佳实践】如何用 Obsidian 笔记优雅管理 每周计划
28 |
29 | 
30 |
31 | ----
32 |
33 | #### 【工具推荐】功能强大全能笔记——Obsidian
34 |
35 | 
--------------------------------------------------------------------------------
/articles/tools.md:
--------------------------------------------------------------------------------
1 | # 文章列表
2 |
3 | #### 【工具推荐】Git 新人学习终极指南:LearnGitBranching
4 |
5 | 
6 |
7 | ----
8 |
9 | #### 【工具推荐】superfile:你的命令行文件管理新伙伴
10 |
11 | 
12 |
13 | ----
14 |
15 | #### 【工具推荐】Tiny RDM:为 Redis 管理准备的一把"瑞士军刀"
16 |
17 | 
18 |
19 | ----
20 |
21 | #### 【工具推荐】Quick Reference:技术栈的速查宝典
22 |
23 | 
24 |
25 | ----
26 |
27 | #### 【工具推荐】Slidev:用 markdown 代码绘制你的演讲
28 |
29 | 
30 |
31 | ----
32 |
33 | #### 全拼打字十几年,我为什么开始改用双拼输入法
34 |
35 | 
36 |
37 | ----
38 |
39 | #### 【工具推荐】比 GPT 和 Midjourney 更强大!一句话就能生成一段视频
40 |
41 | 
42 |
43 | ----
44 |
45 | #### 【高效工具】Webpilot:能帮你做很多事情的 Web 版本的 Copilot
46 |
47 | 
48 |
49 | ----
50 |
51 | #### 【工具推荐】别再让网页亮瞎你——Dark Reader浏览器插件
52 |
53 | 
54 |
55 | ----
56 |
57 | #### 【用键盘画图(二)】mermaid 时序图 实践
58 |
59 | 
60 |
61 | ----
62 |
63 | #### 【用键盘画图】mermaid 甘特图 实践
64 |
65 | 
66 |
67 | ----
68 |
69 | #### 【ChatGPT火了】我们能用它来做什么 & 它是如何做到的
70 |
71 | 
72 |
73 | ----
74 |
75 | #### chrome浏览器 标签页多开 最佳实践
76 |
77 | 
78 |
79 | ----
80 |
81 | #### 【高效工具】手把手教你在命令行中快速用VSCode和PyCharm打开项目
82 |
83 | 
84 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/.DS_Store
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/README.md:
--------------------------------------------------------------------------------
1 | # appfront
2 |
3 | > A Vue.js project
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # build for production and view the bundle analyzer report
18 | npm run build --report
19 | ```
20 |
21 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
22 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {},
14 |
15 | // Various Dev Server settings
16 | host: 'localhost', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 |
24 | /**
25 | * Source Maps
26 | */
27 |
28 | // https://webpack.js.org/configuration/devtool/#development
29 | devtool: 'cheap-module-eval-source-map',
30 |
31 | // If you have problems debugging vue-files in devtools,
32 | // set this to false - it *may* help
33 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
34 | cacheBusting: true,
35 |
36 | cssSourceMap: true
37 | },
38 |
39 | build: {
40 | // Template for index.html
41 | index: path.resolve(__dirname, '../dist/index.html'),
42 |
43 | // Paths
44 | assetsRoot: path.resolve(__dirname, '../dist'),
45 | assetsSubDirectory: 'static',
46 | assetsPublicPath: '/',
47 |
48 | /**
49 | * Source Maps
50 | */
51 |
52 | productionSourceMap: true,
53 | // https://webpack.js.org/configuration/devtool/#production
54 | devtool: '#source-map',
55 |
56 | // Gzip off by default as many popular static hosts such as
57 | // Surge or Netlify already gzip all static assets for you.
58 | // Before setting to `true`, make sure to:
59 | // npm install --save-dev compression-webpack-plugin
60 | productionGzip: false,
61 | productionGzipExtensions: ['js', 'css'],
62 |
63 | // Run the build command with an extra argument to
64 | // View the bundle analyzer report after build finishes:
65 | // `npm run build --report`
66 | // Set to `true` or `false` to always turn it on or off
67 | bundleAnalyzerReport: process.env.npm_config_report
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | appfront
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "appfront",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "waylonshi ",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "build": "node build/build.js"
11 | },
12 | "dependencies": {
13 | "vue": "^2.5.2",
14 | "vue-router": "^3.0.1"
15 | },
16 | "devDependencies": {
17 | "autoprefixer": "^7.1.2",
18 | "babel-core": "^6.22.1",
19 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
20 | "babel-loader": "^7.1.1",
21 | "babel-plugin-syntax-jsx": "^6.18.0",
22 | "babel-plugin-transform-runtime": "^6.22.0",
23 | "babel-plugin-transform-vue-jsx": "^3.5.0",
24 | "babel-preset-env": "^1.3.2",
25 | "babel-preset-stage-2": "^6.22.0",
26 | "chalk": "^2.0.1",
27 | "copy-webpack-plugin": "^4.0.1",
28 | "css-loader": "^0.28.0",
29 | "extract-text-webpack-plugin": "^3.0.0",
30 | "file-loader": "^1.1.4",
31 | "friendly-errors-webpack-plugin": "^1.6.1",
32 | "html-webpack-plugin": "^2.30.1",
33 | "node-notifier": "^5.1.2",
34 | "optimize-css-assets-webpack-plugin": "^3.2.0",
35 | "ora": "^1.2.0",
36 | "portfinder": "^1.0.13",
37 | "postcss-import": "^11.0.0",
38 | "postcss-loader": "^2.0.8",
39 | "postcss-url": "^7.2.1",
40 | "rimraf": "^2.6.0",
41 | "semver": "^5.3.0",
42 | "shelljs": "^0.7.6",
43 | "uglifyjs-webpack-plugin": "^1.1.1",
44 | "url-loader": "^0.5.8",
45 | "vue-loader": "^13.3.0",
46 | "vue-style-loader": "^3.0.1",
47 | "vue-template-compiler": "^2.5.2",
48 | "webpack": "^3.6.0",
49 | "webpack-bundle-analyzer": "^2.9.0",
50 | "webpack-dev-server": "^2.9.1",
51 | "webpack-merge": "^4.1.0"
52 | },
53 | "engines": {
54 | "node": ">= 6.0.0",
55 | "npm": ">= 3.0.0"
56 | },
57 | "browserslist": [
58 | "> 1%",
59 | "last 2 versions",
60 | "not ie <= 8"
61 | ]
62 | }
63 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
5 |
6 |
7 |
8 |
13 |
14 |
24 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/api/api.js:
--------------------------------------------------------------------------------
1 | import axiosInstance from './index'
2 |
3 | const axios = axiosInstance
4 |
5 | export const getBooks = () => {return axios.get(`http://localhost:8000/api/books/`)}
6 |
7 | export const postBook = (bookName, bookAuthor) => {return axios.post(`http://localhost:8000/api/books/`, {'name': bookName, 'author': bookAuthor})}
8 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/api/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Axios from 'axios'
3 |
4 | const axiosInstance = Axios.create({
5 | withCredentials: true
6 | })
7 | axiosInstance.interceptors.request.use((config) => {
8 | config.headers['X-Requested-With'] = 'XMLHttpRequest'
9 | const regex = /.*csrftoken=([^;.]*).*$/
10 | config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]
11 | // console.log(getCookie(csrftoken))
12 | // config.headers['X-CSRFToken'] = getCookie(csrftoken)
13 | return config
14 | })
15 |
16 | axiosInstance.interceptors.response.use(
17 | response => {
18 | return response
19 | },
20 | error => {
21 | return Promise.reject(error)
22 | }
23 | )
24 |
25 | Vue.prototype.axios = axiosInstance
26 |
27 | export default axiosInstance
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/appfront/src/assets/logo.png
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
5 |
6 | -
7 | {{index}}-{{book.name}}-{{book.author}}
8 |
9 |
10 |
11 |
15 |
16 |
17 |
18 |
19 |
20 |
56 |
57 |
58 |
74 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 |
7 | Vue.config.productionTip = false
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | router,
13 | components: { App },
14 | template: ''
15 | })
16 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '@/components/HelloWorld'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'HelloWorld',
12 | component: HelloWorld
13 | }
14 | ]
15 | })
16 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/appfront/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/appfront/static/.gitkeep
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/book_demo/.DS_Store
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.idea/book_demo.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/.idea/workspace.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 | 1586585350460
64 |
65 |
66 | 1586585350460
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/book_demo/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/book_demo/book_demo/__init__.py
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/book_demo/settings.py:
--------------------------------------------------------------------------------
1 | """
2 | Django settings for book_demo project.
3 |
4 | Generated by 'django-admin startproject' using Django 2.2.5.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.2/topics/settings/
8 |
9 | For the full list of settings and their values, see
10 | https://docs.djangoproject.com/en/2.2/ref/settings/
11 | """
12 |
13 | import os
14 |
15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 |
18 |
19 | # Quick-start development settings - unsuitable for production
20 | # See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
21 |
22 | # SECURITY WARNING: keep the secret key used in production secret!
23 | SECRET_KEY = 'wl!_&t_7o6sb_g4)d-j_106mhlb$(xfiq5$srv7xanh&_)@28z'
24 |
25 | # SECURITY WARNING: don't run with debug turned on in production!
26 | DEBUG = True
27 |
28 | ALLOWED_HOSTS = []
29 |
30 |
31 | # Application definition
32 |
33 | INSTALLED_APPS = [
34 | 'django.contrib.admin',
35 | 'django.contrib.auth',
36 | 'django.contrib.contenttypes',
37 | 'django.contrib.sessions',
38 | 'django.contrib.messages',
39 | 'django.contrib.staticfiles',
40 |
41 | # demo
42 | 'corsheaders',
43 | 'rest_framework',
44 | 'books',
45 | ]
46 |
47 | MIDDLEWARE = [
48 | 'corsheaders.middleware.CorsMiddleware',
49 | 'django.middleware.security.SecurityMiddleware',
50 | 'django.contrib.sessions.middleware.SessionMiddleware',
51 | 'django.middleware.common.CommonMiddleware',
52 | 'django.middleware.csrf.CsrfViewMiddleware',
53 | 'django.contrib.auth.middleware.AuthenticationMiddleware',
54 | 'django.contrib.messages.middleware.MessageMiddleware',
55 | 'django.middleware.clickjacking.XFrameOptionsMiddleware',
56 | ]
57 |
58 |
59 | ROOT_URLCONF = 'book_demo.urls'
60 |
61 | TEMPLATES = [
62 | {
63 | 'BACKEND': 'django.template.backends.django.DjangoTemplates',
64 | 'DIRS': [os.path.join(BASE_DIR, 'dist')],
65 | 'APP_DIRS': True,
66 | 'OPTIONS': {
67 | 'context_processors': [
68 | 'django.template.context_processors.debug',
69 | 'django.template.context_processors.request',
70 | 'django.contrib.auth.context_processors.auth',
71 | 'django.contrib.messages.context_processors.messages',
72 | ],
73 | },
74 | },
75 | ]
76 |
77 | WSGI_APPLICATION = 'book_demo.wsgi.application'
78 |
79 |
80 | # Database
81 | # https://docs.djangoproject.com/en/2.2/ref/settings/#databases
82 |
83 | DATABASES = {
84 | 'default': {
85 | 'ENGINE': 'django.db.backends.sqlite3',
86 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
87 | }
88 | }
89 |
90 |
91 | # Password validation
92 | # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
93 |
94 | AUTH_PASSWORD_VALIDATORS = [
95 | {
96 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
97 | },
98 | {
99 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
100 | },
101 | {
102 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
103 | },
104 | {
105 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
106 | },
107 | ]
108 |
109 |
110 | # Internationalization
111 | # https://docs.djangoproject.com/en/2.2/topics/i18n/
112 |
113 | LANGUAGE_CODE = 'en-us'
114 |
115 | TIME_ZONE = 'UTC'
116 |
117 | USE_I18N = True
118 |
119 | USE_L10N = True
120 |
121 | USE_TZ = True
122 |
123 |
124 | # Static files (CSS, JavaScript, Images)
125 | # https://docs.djangoproject.com/en/2.2/howto/static-files/
126 |
127 | STATIC_URL = '/static/'
128 |
129 | STATICFILES_DIRS = [
130 | os.path.join(BASE_DIR, 'dist/static'),
131 | ]
132 |
133 | # 支持跨域配置开始
134 | CORS_ORIGIN_ALLOW_ALL = True
135 |
136 | CORS_ALLOW_CREDENTIALS = True
137 |
138 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/book_demo/urls.py:
--------------------------------------------------------------------------------
1 | """book_demo URL Configuration
2 |
3 | The `urlpatterns` list routes URLs to views. For more information please see:
4 | https://docs.djangoproject.com/en/2.2/topics/http/urls/
5 | Examples:
6 | Function views
7 | 1. Add an import: from my_app import views
8 | 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 | Class-based views
10 | 1. Add an import: from other_app.views import Home
11 | 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 | Including another URLconf
13 | 1. Import the include() function: from django.urls import include, path
14 | 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 | """
16 | from django.contrib import admin
17 | from django.urls import path, include
18 | from django.views.generic.base import TemplateView
19 |
20 | urlpatterns = [
21 | path('admin/', admin.site.urls),
22 | path('api/', include('books.urls')),
23 | path('', TemplateView.as_view(template_name='index.html'))
24 | ]
25 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/book_demo/wsgi.py:
--------------------------------------------------------------------------------
1 | """
2 | WSGI config for book_demo project.
3 |
4 | It exposes the WSGI callable as a module-level variable named ``application``.
5 |
6 | For more information on this file, see
7 | https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
8 | """
9 |
10 | import os
11 |
12 | from django.core.wsgi import get_wsgi_application
13 |
14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'book_demo.settings')
15 |
16 | application = get_wsgi_application()
17 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/book_demo/books/__init__.py
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | # Register your models here.
4 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class BooksConfig(AppConfig):
5 | name = 'books'
6 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/migrations/0001_initial.py:
--------------------------------------------------------------------------------
1 | # Generated by Django 2.2.5 on 2020-04-11 07:37
2 |
3 | from django.db import migrations, models
4 |
5 |
6 | class Migration(migrations.Migration):
7 |
8 | initial = True
9 |
10 | dependencies = [
11 | ]
12 |
13 | operations = [
14 | migrations.CreateModel(
15 | name='Books',
16 | fields=[
17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18 | ('name', models.CharField(max_length=30)),
19 | ('author', models.CharField(blank=True, max_length=30, null=True)),
20 | ],
21 | ),
22 | ]
23 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/migrations/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/normal-wls/Blogs-Code/71e524fbaba94b83d5f42d6d252377f481efd294/django_demo_with_frontend_and_backend/book_demo/books/migrations/__init__.py
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 |
4 | class Books(models.Model):
5 | name = models.CharField(max_length=30)
6 | author = models.CharField(max_length=30, blank=True, null=True)
7 |
8 |
9 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/serializer.py:
--------------------------------------------------------------------------------
1 | from rest_framework import serializers
2 |
3 | from books.models import Books
4 |
5 |
6 | class BooksSerializer(serializers.ModelSerializer):
7 | class Meta:
8 | model = Books
9 | fields = '__all__'
10 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/urls.py:
--------------------------------------------------------------------------------
1 | from django.urls import path, include
2 | from rest_framework.routers import DefaultRouter
3 |
4 | from books import views
5 |
6 |
7 | router = DefaultRouter()
8 | router.register('books', views.BooksViewSet)
9 |
10 | urlpatterns = [
11 | path('', include(router.urls)),
12 | path('login/', views.login_view),
13 | path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
14 | ]
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/books/views.py:
--------------------------------------------------------------------------------
1 | import json
2 |
3 | from django.contrib import auth
4 | from django.http import HttpResponse
5 | from django.contrib.auth.models import User
6 | from rest_framework import viewsets
7 | from rest_framework.permissions import IsAuthenticated
8 |
9 | from books.models import Books
10 | from books.serializer import BooksSerializer
11 |
12 |
13 | class BooksViewSet(viewsets.ModelViewSet):
14 | queryset = Books.objects.all()
15 | serializer_class = BooksSerializer
16 |
17 |
18 | def login_view(request):
19 | # data = json.loads(request.body.decode('utf-8'))
20 | # username = data.get('user')
21 | # password = data.get('password')
22 | user = auth.authenticate(request, username='Tom', password='tompassword')
23 | if user is not None and user.is_active:
24 | auth.login(request, user)
25 | return HttpResponse("Login Success")
26 |
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/index.html:
--------------------------------------------------------------------------------
1 | appfront
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/static/css/app.11378086ec3ae2b554b35d16a727b7d2.css:
--------------------------------------------------------------------------------
1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}h1[data-v-23521bbc],h2[data-v-23521bbc]{font-weight:400}ul[data-v-23521bbc]{list-style-type:none;padding:0}li[data-v-23521bbc]{display:inline-block;margin:0 10px}a[data-v-23521bbc]{color:#42b983}
2 | /*# sourceMappingURL=app.11378086ec3ae2b554b35d16a727b7d2.css.map */
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/static/css/app.11378086ec3ae2b554b35d16a727b7d2.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["app.11378086ec3ae2b554b35d16a727b7d2.css"],"names":[],"mappings":"AACA,KACE,6CAAmD,CACnD,kCAAmC,CACnC,iCAAkC,CAClC,iBAAkB,CAClB,aAAc,CACd,eACF,CAEA,wCACE,eACF,CACA,oBACE,oBAAqB,CACrB,SACF,CACA,oBACE,oBAAqB,CACrB,aACF,CACA,mBACE,aACF","file":"app.11378086ec3ae2b554b35d16a727b7d2.css","sourcesContent":["\n#app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n margin-top: 60px;\n}\n\nh1[data-v-23521bbc], h2[data-v-23521bbc] {\n font-weight: normal;\n}\nul[data-v-23521bbc] {\n list-style-type: none;\n padding: 0;\n}\nli[data-v-23521bbc] {\n display: inline-block;\n margin: 0 10px;\n}\na[data-v-23521bbc] {\n color: #42b983;\n}\n"]}
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/static/js/app.6776c8184735e212af31.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([1],{"7Otq":function(t,e){t.exports="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd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"},NHnr:function(t,e,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=o("7+uW"),i={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{attrs:{id:"app"}},[e("img",{attrs:{src:o("7Otq")}}),this._v(" "),e("router-view")],1)},staticRenderFns:[]};var a=o("VU/8")({name:"App"},i,!1,function(t){o("Yz1H")},null,null).exports,s=o("/ocq"),c=o("//Fk"),u=o.n(c),r=o("I29D"),l=o.n(r).a.create({withCredentials:!0});l.interceptors.request.use(function(t){t.headers["X-Requested-With"]="XMLHttpRequest";var e=/.*csrftoken=([^;.]*).*$/;return t.headers["X-CSRFToken"]=null===document.cookie.match(e)?null:document.cookie.match(e)[1],t}),l.interceptors.response.use(function(t){return t},function(t){return u.a.reject(t)}),n.a.prototype.axios=l;var h=l,k={name:"HelloWorld",data:function(){return{msg:"Welcome to Your Vue.js App",books:[{name:"test",author:"t"},{name:"test2",author:"t2"}],inputBook:{name:"",author:""}}},methods:{loadBooks:function(){var t=this;h.get("http://localhost:8000/api/books/").then(function(e){t.books=e.data})},bookSubmit:function(){var t,e,o=this;(t=this.inputBook.name,e=this.inputBook.author,h.post("http://localhost:8000/api/books/",{name:t,author:e})).then(function(t){console.log(t),o.loadBooks()})}},created:function(){this.loadBooks()}},I={render:function(){var t=this,e=t.$createElement,o=t._self._c||e;return o("div",{staticClass:"hello"},[o("h1",[t._v(t._s(t.msg))]),t._v(" "),o("ul",t._l(t.books,function(e,n){return o("li",{key:n,staticStyle:{display:"block"}},[t._v("\n "+t._s(n)+"-"+t._s(e.name)+"-"+t._s(e.author)+"\n ")])}),0),t._v(" "),o("form",{attrs:{action:""}},[t._v("\n 输入书名:"),o("input",{directives:[{name:"model",rawName:"v-model",value:t.inputBook.name,expression:"inputBook.name"}],attrs:{type:"text",placeholder:"book name"},domProps:{value:t.inputBook.name},on:{input:function(e){e.target.composing||t.$set(t.inputBook,"name",e.target.value)}}}),o("br"),t._v("\n 输入作者:"),o("input",{directives:[{name:"model",rawName:"v-model",value:t.inputBook.author,expression:"inputBook.author"}],attrs:{type:"text",placeholder:"book author"},domProps:{value:t.inputBook.author},on:{input:function(e){e.target.composing||t.$set(t.inputBook,"author",e.target.value)}}}),o("br")]),t._v(" "),o("button",{attrs:{type:"submit"},on:{click:function(e){return t.bookSubmit()}}},[t._v("submit")]),t._v(" "),o("br")])},staticRenderFns:[]};var m=o("VU/8")(k,I,!1,function(t){o("eCLI")},"data-v-23521bbc",null).exports;n.a.use(s.a);var p=new s.a({routes:[{path:"/",name:"HelloWorld",component:m}]});n.a.config.productionTip=!1,new n.a({el:"#app",router:p,components:{App:a},template:""})},Yz1H:function(t,e){},eCLI:function(t,e){}},["NHnr"]);
2 | //# sourceMappingURL=app.6776c8184735e212af31.js.map
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/static/js/app.6776c8184735e212af31.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./src/assets/logo.png","webpack:///./src/App.vue?e77b","webpack:///./src/App.vue","webpack:///src/App.vue","webpack:///./src/api/index.js","webpack:///./src/api/api.js","webpack:///src/components/HelloWorld.vue","webpack:///./src/components/HelloWorld.vue?08ae","webpack:///./src/components/HelloWorld.vue","webpack:///./src/router/index.js","webpack:///./src/main.js"],"names":["module","exports","selectortype_template_index_0_src_App","render","_h","this","$createElement","_c","_self","attrs","id","src","__webpack_require__","_v","staticRenderFns","src_App","normalizeComponent","name","ssrContext","axiosInstance","Axios","create","withCredentials","interceptors","request","use","config","headers","regex","document","cookie","match","response","error","promise_default","a","reject","Vue","prototype","axios","HelloWorld","data","msg","books","author","inputBook","methods","loadBooks","_this","get","then","bookSubmit","bookName","bookAuthor","_this2","post","console","log","created","components_HelloWorld","_vm","staticClass","_s","_l","book","index","key","staticStyle","display","action","directives","rawName","value","expression","type","placeholder","domProps","on","input","$event","target","composing","$set","click","src_components_HelloWorld","HelloWorld_normalizeComponent","Router","router","routes","path","component","productionTip","el","components","App","template"],"mappings":"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","file":"static/js/app.6776c8184735e212af31.js","sourcesContent":["module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTk2QkI4RkE3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTk2QkI4Rjk3NjE2MTFFNUE4NEU4RkIxNjQ5MTYyRDgiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjU2QTEyNzk3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjU2QTEyN0E3NjkyMTFFMzkxODk4RDkwQkY4Q0U0NzYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5WHowqAAAXNElEQVR42uxda4xd1XVe53XvvD2eGQ/lXQcKuDwc2eFlCAGnUn7kT6T86J/+aNTgsWPchJJYciEOCQ8hF+G0hFCIHRSEqAuJBCqRaUEIEbmBppAIBGnESwZje8COZ+y587j3PLq+ffadGJix53HvPevcuz60xPjec89ZZ+39nf04+9vLSZKEFArFzHA1BAqFEkShUIIoFEoQhUIJolAoQRQKJYhCoQRRKJQgCoUSRKFQKEEUCiWIQrFo+Gv/8/YH+f/nsMWSHHMChyhxqPTTdyncWyJ3ScD/ztipiB3wXSqu6P17avN+TyFC5ggv4tRnmoxWTP1+5F+Mz17GPvPl49EKBWd3UsfXllPiso8VcYtmPba3fNuKrBVXrGFCbrdPwXndFL49ltI367roOpSUI4pGypv9s7q+ltj6JxqOQ07Bo/DgxGb2/a8cX0CnAWXJ5etz2TqdHiXHKlKj9w6i9XX8Ic41DmI8FVHhmmXk85MmRhCzJoiTWnig9LfJRHihgydxzAxJhBr7Bh/hK3yu+p9568FliTJF2aKMZfVd/kQOcKP6OBmS9+Rjm4zJ6faoeN0gOUn61MncLX4CJ+MRhe+P/dRxhfew2Df4CF/hs4jWg8vQYUKYMuWyRRkLjeHQ8YP0Z9mekVjA8Qj3VVcuoeDiXu63lkUE0ym6FA5PXBaNVr7qtPumGyPR4Bt8hK/wWUR5chn6XJYoU5StUHL8l+XEx2axhkS6yk+chJuP4rXLyOkIKJkS0B67adcqfL/0Y4pixxSysK6V8Yl9Mz7i3272NRFlhzJsu24Z5l9E9Ahmwfrpoj7uw3fZtktsRZKjIXnndlLxin7+W8ZTBwPf6I+Tg9HwxK2Ob8citbCoBoaxBxMCvsFH+CqjHCtUvLzflKWUcpwB91gupG5f9/Rtx39ZZBtmWyJtphKzHTQW0diP36b4aJmcLj/zGaSkHJPb4SWFi/tOJd8bTqd9s48VBRh4RKeUX/vjgXg8cpyCmz05xkJylxSoa8M5RF0eJaVIIkGOsg2yTc3UgpD94psiWxEOqDNYoOIXuHnGwE5AXUTFi46FTnRw4l/dwEm7/pSxcYnCF/gE3zInh52RRJkVP7/MlKFQcgCbjifHTAQBfsb2qsgBO3e1Cpf3UXBej3nRJKKrxU/rcH/pKzz4vNIQuRJTEmZklbg6EL4SPsE3GQPzinmfhbJDGQolB+r8w58abs5y8DqRt4ABeptLRR7koY9NleybEYw/MPisvF/ayT1/SvDewcnIcG32wfiCAbEvoCZyGaGsitdyz6XdTctQJq6fcT5mloNfYvu5yFZkpEz+RT0UrFoqpxVBV+vQxIrkaPnrbqdvXs6hcjbU+Jq4Nvvwd/BFRNeq2npwWfkX95iyE9p6PM72P/MhCPANTBSKu5WITHcC074Y9CUTkYglKBgcV/aVtlM5Kpp/RHFjDdfka7MP/2wG6m72661QNigjlBXKTGBtsjWKNs5atCf44Uds3xc5YD8Wknd2BxWuGjCzIxLWQzlFj+IjU108OL7bafM5sm5DDdfka/8T+9AJXyTMpqFsUEYoK5SZ0NbjVlvX500Q4Ha2A+JuCcEvhVS8qp/8MzspHhMSfO7mVPaP35BMRp9JsCQldbX+hmvxNfnamzJfqVvtWnGZoGxQRigroYs6UbfvOGHn4ORVkTaIbEWwtqg3MNO+Zql0JGCdVuCayhDuG9uJB7vp+oR17FbZc+NauCauLWLmKkqXr6NsUEYoK6GtxwY6CXXnEs0n2faIHLCPhhR8bikFKwRN+xZddHWu5a7Ol9yCZ2ZwHKdOxufGNeKRqS/hmnLWW1VMmQSrl5oyEkqOPbZu02IJAsic9sU7B+5uF9cOmqUfeLOdOaAZYb/CA+M/Ic9NxUoYMNfD/PT84f7xB807EAnrrbgMUBZt1w1SEpCIqfjF1Om5EuQNth0iu1r8tPLP76LCpX2yWpHDk2dGH018p6brtD5hOHf04cR3okOTZ0lqPVAW3gVdlMhdrfsTW6drRhDgRrYJcbeKZQxTkenvegNt6YBQwrQvOxG+P3ZHEia9TuClS9Br1XKge8XnxLlxjelzZ/2w4tijDMxyoHIsVQg1zvYPcy7KeZx4jG2zyFakFJF7Whu1XT2QvhfJeryeVNdplYPo4Pi9hKd7VVxVC8O5cH4+N65hXgoKuGfEHmWAskjGxI49Ntu6XHOCAD9ie1PcLSepjDNY00fB8m6KpSyJx/jgg9LfJEfLK40818w+LXY5e5zKaMfKl+DcIlSCZp0cd3U59igDI4+WOa2LunvfvDoD9RrcNLqAjDy3yzfrtKqbAkggSDIZmSlYxzz9a8BaJ101zF2rh3BuSTJaCKGMDEGujHbedXch0X2ebbdEkkDC6a9cQoWVguS53P0JP5xcHY1W/tppD9KxgrdAw5QxnwPn4nOukrPeqkzBJb0m9oJltLtt3a07QYD1IkMAeS7/hw0BXMhzJwXJc/eV7kuiyIN8OOGuUhLP06JUeoxz4FxiZLRouTsDM9WO2OdBRtsIgrzHtk3kgH00JO+cTipc2S9jqyCaluf2xwcnfuB6LndHuEsSzdP4N/gtzoFzSZHRIsaQQiPmidyXgttsnW0YQYDvsh2ROGBPxkMqXjNA/qlCFsnZ8UdlX+kfk0pymlnMWH2JOBfz0sWI+C3OMS1dzPphhPVWHOPC5wdMzIUOzFFHb1lwB2ARF+ZOPt0gshWBPLe/wCRZlu6CIkSei/cE0fD4g2ZbVWceyxH5WPwGvzXrrSTJaDnG7oBoGS3qaCULggCPsv1W5IAd8tzLllJwvpx1WthMIfyg9OVotHy1WVQ4V37wsfgNfkuSZLQcW8Q4lruU/RVbRykrggDXiwwN3uQWnXTa1xMkz2W/on2lndNajpNtAGePw2/MOicBMlqs+8K7GBNbjrFgGe2iX0nUgiAvs+0S2YpgndaFPVRc3SdmVanZlfGjifOiw5PrT/oGvPpG/vDkEH4jZ70Vt86rl5rYimmdP41/s3Uzc4Isup9XNxwvz+0tyNAlONPrtO6hctR+QnluKqNt52O3pxvtClhvxTH0egtmEwbBMlrUxU21OFGtCHKYbavIATv3j90z26kIea4QZRtahfhIuT0anrjH7O3rpjNVHzPIaLG3Lh8Tj5TbRQihjlNyehxTwTLarbZOiiEIcBfbPnGhMtroChXW9JN/VqeYdyPEY4nwwPj6ZCL8C1T+T61JhDqRv8MxZgwlJG2BxzEsrBmgeEzseqt9ti6SNIIA8t6wm901eFDZ66d7M4UkQ56LVgTTvvtKaRqFqoTWymjxGb6LpUzrImYcuzaOIWKJmAptPWpaB2sd+V+yvSB1wB6s7qXgwiUyBpbJdBqFq6MjU18mKCKhRsTyEbx558/wnRmYJzLiV+DYBat6JQ/MX7B1UCxBAKHy3IQrH6W7MhY9MWkUMNAN948/8Mm35/jMDIKlpC3gmBWQtsAjifkE61b36kGQP7DdL7KrVZXnXiYpjYKZxj09Gh7f4kB4yIa/8ZmU1brIIYiYIXaJ3Nbjflv3xBME+DZbSVwIzfIIK89dJkSea18Ihu+XflD9yPztCJnW5Ri5VRntpNh8giVb5ygvBIHu9yaRrchYRO6fFU0CSTPQlDLte6zshx9O3g3D3yJajySd4EDaAsQMsRPaetxk61zty+YTCXRqjf9jO19cOLnyYV+p8QffpcreMXJ7BeRgh77Ds6SIYhGbMBgB2tld1DW0nGL4VxbZfKBbdUHdhol1dl7mOi0MOjttGgWT11lAwU9r1mMSsX0oxwSxgYyWOvKXtiAvBPkV239I7GqZdVqX9FDw2V5+UoYipn2nt/WRMK3LMQlW9poYCZ7WfcrWsdwSBNggMrRYdcLdhjas0+q28lzJOc8bOU7jWLh2AwzEyLxclYm6Z2ZuBEE+YLtTZEVA9tzPdBh5biJ3q5rGD8yRjXbNAPkcm0RuyjTUqf3NQBDge2yHJFaGeDyi4tUD5J3WIXmzs8Y9NDgG3un80OCYIDZCHxqHbJ2iZiEIGmnB8twgzYIkd7vMxiBON59GLJyBQLKMdiM1qOPXyMn2f2f7X5EDdshzkUbhAtED0oZMXCAGiIXgtAW/YXusURdr9NsoufLcgmP20zKy2ErrNSNGRuunMUAshL7zABq61q/RBPkd2yNSn57+X3ZTQZA8t7H3H5p7RwwEt6KP2DrUtAQBIIUsiwt99Kf+tydFntuocVhVRltNWyBTRlumGslopRNkhO1mkRVlLCT3jHYzqyU48WSN+1ZWRou0BZDRyp3Ju9nWnaYnCHA3216JlQWy0gKy557dJSaNQn0nKNL1VrhnwTLavbbOUKsQBBApzzVpFHqsPFdIGoW6AfeG7cMwrcv3TC0io80LQZ5me07kU3WkYqSlhYvkpFGoz8C8bO7RyGjlpi14ztaVliMIIFOeizQKbpI+WdsDGfLcWvcmsaK53b4gdUW3lENZXjxrgrzNdq/IAftohbzzOql4eV/zjUUcu96K7w33KFhGi7rxVisTBEBSxWPiiqYqz71mGfmDQuS5tSIHstHyPZnd7+XKaI+RgKSxEggySWmKaXkVaSwi5xSbRmGiSdZpxVZGy/eEexMso73R1o2WJwiwk+11kQNZrNO6oo+Cc7vz39Wy07q4l+CKfnNvQu/ndVsnSAkifcCOAXq7R8W1y9JdRvI87QvfnTRtgdPeujLavBLkv9meEPnUHS2Tf1EPFT67lOKRnE77munrsrkH/+IeydPXqAO/VoLMDMhz5T2irTzXpFHoKeRPnluV0XYX0mlduTLamIRJtKUR5CDbbSIrGPfX/eUdVFyTQ3luku6OaNIW/HmH5LQFt9k6oAQ5Ab7PNiyxkmGndUhRvTNyJM9F1wrZaM9IZbQmG63MocewxIejRIKg+DaKbEXGI3KWBtT2hUFKyonUZeEfB3xkX4vsM3wXvIx/IwmMqCu0WH/B9qLIpzG6Wp/rpWBFj/x1WnaCAb4G7LPgad0XbZmTEmTukDnti0yzgZvKcwNPtDzXyGjZR5ONFincVEbbVAR5je0hkU/lkTL5F3TZzQ2EvjysJr1hH/0LuiVPTz9ky1oJsgB8iwQsN5hplISns5Hn9hXl9eurMlr2zUzrVsQuk5m0ZUxKkIXhKNsWkQN2yHNPhzx3WbqQMRZGYCOjXWZ8FDzjtsWWsRJkEfgh2zvyOvhWnovsucu75GTPtdlo4RN8i+W+s3nHli0pQRaPIXEeVeW53V46YJciz2Uf4IvxiX0juW/9h/JQ8fJCkGfZnpE5YK9QsHIJBZcIkOdW141d3Gt8EiyjfcaWqRKk6Z84kOc6duODjmzluUZGyz4g6Q18UhltaxHkXbbtIgfsRyvknQt5bobZc6dltP3Gl0SudmW7LUslSJ1mPUbFeWVUepDnDpB3SgazRtW0BXxt+ABfhE7rypyVbCKCTLF9U2QrgjQKg3b7zskGv3eI0+XsuDZ8EJy2YJMtQyVIHfEztldFDtghz728j4LzGphGoZq2gK9ZMDuwiH3ngTJ7OG+VLY8EAeTKc9ts9lwk42zEOi2st+JrYZIA1xYso12Xx4qWV4K8xPZzka3ISCrPDVY1YJ1WtfVYZWW0ctdbPW7LTAnSQHyDJCoykEYhTNdpuUsK6YDZqQ85cG5cw6y3CsWmLYBXG/NayfJMkI8oVR/KG7AfC8k7u4MKVw2kM1r1eB2RpDNXuAauJVhGe6stKyVIBrid7YA4r6o5N5BG4cxOI3mtaeWtymj53LiG4FwmKJs78lzB8k4QVIsN4ryqynN7AzP1ShXIc2tYg3GuSpJO6/aKltHK3KWmhQgCPMm2R+SAfTSkANlzV9Rw2rc6MDcyWtHZaPfYsiElSPaQOYVYiSnxiIprB8kpeGn+v8U2mZD8FjxzTpybKjqtqwQ5Od5g2yGyq4Xsued3UeHSvsW3IlUZLZ8L5xSctmCHLRMliCBgN/AJcV7F6SpbjBe8gUWkUaimLeBzmOUsU2JltOMkcbd+JQiNkYB8ErNVbPe0Nmq72i4kXMiwNUnfe+AcOJfgfCWbbVkoQQTiR2xvivPKynODNX0ULF9AGoVq2gL+Lc4hWEaL2N/XTBWq2Qgic3BYled2+ekeVfOV51az0WKNF59DsIx2XbNVpmYkyPNsuyWSBBJYf+USKsxHnlvNRsu/8WXLaHfb2CtBcoD1Ir2CPJf/wxSt2xmkupGT9c6QtoCPNdO66FfJldGub8aK1KwEeY9tm8gB+2hI3jmdVLii/+RbBdktfHAsfpPIfSm4zcZcCZIjfJftiMQBO1IQQBrrn3qCRYZ20SOOMTLacbHrrRDjW5q1EjUzQbiTTzeIbEUgz+232XNne59RfX+CbLT9omW0iHFFCZJPPMr2W5EDdshzL1tKwfkzrNOqrrfi73CMYBntKzbGpATJL64X6RXWZRVtxlnP+VgaBZO2wEu/wzGatkAJUk+8zLZLZCuCdVoXciux+rhVuXYVMD7Dd7Hc9Va7bGyVIE0Amf3kaXnuIHm9qTwXhr/xmWAZbUXk+E4JsmAcZtsqcsAOee6Z7VS08lwY/sZngmW0W21MlSBNhLvY9onzCqtIxipUuKqf3L6iMfyNz4RO6+6zsWwJ+NRawNvep8S1IhMxucie+8VT0o+6PIqPiB17rG+lCtNqBPkl2wts14gbsCONwqVLzT8Fr7d6wcawZeBS60Hm1GSSTu+a6d5EY6cEyQ5/YLtf4oCd4iQ1ma3H/TZ2SpAWwLfZSqSYK0o2ZqQEaQ1AN32T1vs54yYbMyVIC+GBVuwyLLBL+kCr3rzb4oV/vdZ/jZESZHb8iqS9F5GFp2yMlCAtjCENgcZGCTI79rPdqWH4FO60sVGCKOh7bIc0DNM4ZGNCShAFEFKOsyDVARttTJQgGoJpPMb2Gw2DicFjGgYlyExYpyHQGChBZsfv2B5p4ft/xMZAoQSZFZso3TKo1VC2965QgpwQI2w3t+B932zvXaEEOSnuZtvbQve7196zQgkyZ6zXe1UoQWbH02zPtcB9PmfvVaEEmTeG9B6VIIrZ8RbbvU18f/fae1QoQRYMJKU81oT3dYwkJj1VguQOk9REaY2Pw4323hRKkEVjJ9vrTXQ/r9t7UihBaobr9V6UIIrZ8Wu2J5rgPp6w96JQgtQcG2jmhGl5QWzvQaEEqQsOst2WY/9vs/egUILUtZIN59Dv4ZyTWwmSEyDnUx7luRtJar4qJUjT4RdsL+bI3xetzwolSMOwTn1Vgihmx2tsD+XAz4esrwolSMPxLZK9XGPS+qhQgmSCo2xbBPu3xfqoUIJkhh+yvSPQr3esbwolSOYYUp+UIIrZ8SzbM4L8ecb6pFCC6BNbWw8lSB7wLtt2AX5st74olCDikPWskfRZNSVIi2OKst2+c5P1QaEEEYuH2V7N4Lqv2msrlCDisa5FrqkEUSwIL7E93sDrPW6vqVCC5AaN0l/kVZ+iBGlxfMR2awOuc6u9lkIJkjvcwXagjuc/YK+hUILkEgnVdxeRDfYaCiVIbvEk2546nHePPbdCCZJ7rMvJORVKkEzwBtuOGp5vhz2nQgnSNMBu6uM1OM84Nedu80qQFscY1SYfx2Z7LoUSpOlwH9ubi/j9m/YcCiWIDth1YK4EaUU8z7Z7Ab/bbX+rUII0PdY36DcKJUgu8R7btnkcv83+RqEEaRncwnZkDscdsccqlCAthQrbDXM47gZ7rEIJ0nJ4lO2VE3z/ij1GoQRpWaxb4HcKJUhL4GW2XTN8vst+p1CCtDw+Oc6Y6/hEoQRpCRxm23rcv7fazxRKEIXFXZRuwBDZvxUC4GsIREHflguDkyQqaVYotIulUChBFAoliEKhBFEolCAKhRJEoVCCKBRKEIVCCaJQKJQgCoUSRKFQgigUShCFIhP8vwADACog5YM65zugAAAAAElFTkSuQmCC\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/logo.png\n// module id = 7Otq\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('img',{attrs:{\"src\":require(\"./assets/logo.png\")}}),_vm._v(\" \"),_c('router-view')],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4c97dd40\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4c97dd40\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4c97dd40\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","\n \n

\n
\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","import Vue from 'vue'\nimport Axios from 'axios'\n\nconst axiosInstance = Axios.create({\n withCredentials: true\n})\naxiosInstance.interceptors.request.use((config) => {\n config.headers['X-Requested-With'] = 'XMLHttpRequest'\n const regex = /.*csrftoken=([^;.]*).*$/\n config.headers['X-CSRFToken'] = document.cookie.match(regex) === null ? null : document.cookie.match(regex)[1]\n // console.log(getCookie(csrftoken))\n // config.headers['X-CSRFToken'] = getCookie(csrftoken)\n return config\n})\n\naxiosInstance.interceptors.response.use(\n response => {\n return response\n },\n error => {\n return Promise.reject(error)\n }\n)\n\nVue.prototype.axios = axiosInstance\n\nexport default axiosInstance\n\n\n// WEBPACK FOOTER //\n// ./src/api/index.js","import axiosInstance from './index'\n\nconst axios = axiosInstance\n\nexport const getBooks = () => {return axios.get(`http://localhost:8000/api/books/`)}\n\nexport const postBook = (bookName, bookAuthor) => {return axios.post(`http://localhost:8000/api/books/`, {'name': bookName, 'author': bookAuthor})}\n\n\n\n// WEBPACK FOOTER //\n// ./src/api/api.js","\n \n
{{ msg }}
\n \n
\n - \n {{index}}-{{book.name}}-{{book.author}}\n
\n
\n \n
\n
\n
\n
\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/HelloWorld.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"hello\"},[_c('h1',[_vm._v(_vm._s(_vm.msg))]),_vm._v(\" \"),_c('ul',_vm._l((_vm.books),function(book,index){return _c('li',{key:index,staticStyle:{\"display\":\"block\"}},[_vm._v(\"\\n \"+_vm._s(index)+\"-\"+_vm._s(book.name)+\"-\"+_vm._s(book.author)+\"\\n \")])}),0),_vm._v(\" \"),_c('form',{attrs:{\"action\":\"\"}},[_vm._v(\"\\n 输入书名:\"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputBook.name),expression:\"inputBook.name\"}],attrs:{\"type\":\"text\",\"placeholder\":\"book name\"},domProps:{\"value\":(_vm.inputBook.name)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.inputBook, \"name\", $event.target.value)}}}),_c('br'),_vm._v(\"\\n 输入作者:\"),_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputBook.author),expression:\"inputBook.author\"}],attrs:{\"type\":\"text\",\"placeholder\":\"book author\"},domProps:{\"value\":(_vm.inputBook.author)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.$set(_vm.inputBook, \"author\", $event.target.value)}}}),_c('br')]),_vm._v(\" \"),_c('button',{attrs:{\"type\":\"submit\"},on:{\"click\":function($event){return _vm.bookSubmit()}}},[_vm._v(\"submit\")]),_vm._v(\" \"),_c('br')])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-23521bbc\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-23521bbc\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HelloWorld.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./HelloWorld.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-23521bbc\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./HelloWorld.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-23521bbc\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HelloWorld.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport Router from 'vue-router'\nimport HelloWorld from '@/components/HelloWorld'\n\nVue.use(Router)\n\nexport default new Router({\n routes: [\n {\n path: '/',\n name: 'HelloWorld',\n component: HelloWorld\n }\n ]\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport router from './router'\n\nVue.config.productionTip = false\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n components: { App },\n template: ''\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}
--------------------------------------------------------------------------------
/django_demo_with_frontend_and_backend/book_demo/dist/static/js/manifest.2ae2e69a05c33dfc65f8.js:
--------------------------------------------------------------------------------
1 | !function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a