From eb51695b318731a78f17b6477f4931f8a92b872b Mon Sep 17 00:00:00 2001 From: yao_wang Date: Sun, 17 Sep 2023 22:36:56 +0800 Subject: [PATCH] 0917 --- front/package-lock.json | 138 ++++++------ front/package.json | 3 - front/src/App.vue | 32 ++- front/src/components/Home.vue | 22 +- front/src/components/nav/nav.vue | 31 +-- front/src/components/secondary/bookList.vue | 59 +++--- front/src/components/secondary/borrowing.vue | 46 ++-- front/src/components/secondary/details.vue | 199 ++++++++++++++++++ front/src/components/secondary/login.vue | 109 +++++----- front/src/components/secondary/table.vue | 8 +- front/src/main.js | 31 +-- front/src/router/router.js | 28 ++- front/src/store/store.js | 11 +- last/.idea/modules.xml | 8 - .../books/__pycache__/urls.cpython-310.pyc | Bin 305 -> 305 bytes .../books/__pycache__/views.cpython-310.pyc | Bin 1375 -> 1333 bytes last/end/books/migrations/0001_initial.py | 14 +- ...ok_listing_time_alter_book_updated_time.py | 23 -- last/end/books/migrations/0003_book_pic.py | 18 -- .../__pycache__/0001_initial.cpython-310.pyc | Bin 1233 -> 1233 bytes ...me_alter_book_updated_time.cpython-310.pyc | Bin 732 -> 0 bytes .../__pycache__/0003_book_pic.cpython-310.pyc | Bin 657 -> 0 bytes last/end/books/urls.py | 6 +- last/end/books/views.py | 31 +-- .../end/__pycache__/settings.cpython-310.pyc | Bin 3029 -> 3029 bytes last/end/end/__pycache__/urls.cpython-310.pyc | Bin 406 -> 406 bytes last/end/end/settings.py | 4 - last/end/end/urls.py | 9 +- .../record/__pycache__/models.cpython-310.pyc | Bin 692 -> 675 bytes .../record/__pycache__/views.cpython-310.pyc | Bin 2320 -> 2341 bytes last/end/record/migrations/0001_initial.py | 2 +- last/end/record/migrations/0002_initial.py | 4 +- .../migrations/0003_alter_record_book.py | 20 -- .../__pycache__/0001_initial.cpython-310.pyc | Bin 1008 -> 1008 bytes .../__pycache__/0002_initial.cpython-310.pyc | Bin 778 -> 778 bytes .../0003_alter_record_book.cpython-310.pyc | Bin 722 -> 0 bytes last/end/record/models.py | 2 +- last/end/record/views.py | 1 + .../user/__pycache__/models.cpython-310.pyc | Bin 534 -> 538 bytes .../user/__pycache__/views.cpython-310.pyc | Bin 1832 -> 1710 bytes last/end/user/migrations/0001_initial.py | 12 +- ...0002_userinfo_pic_alter_userinfo_career.py | 23 -- .../__pycache__/0001_initial.cpython-310.pyc | Bin 2451 -> 2455 bytes ..._pic_alter_userinfo_career.cpython-310.pyc | Bin 717 -> 0 bytes last/end/user/models.py | 2 +- last/end/user/views.py | 7 +- 46 files changed, 488 insertions(+), 415 deletions(-) create mode 100644 front/src/components/secondary/details.vue delete mode 100644 last/.idea/modules.xml delete mode 100644 last/end/books/migrations/0002_alter_book_listing_time_alter_book_updated_time.py delete mode 100644 last/end/books/migrations/0003_book_pic.py delete mode 100644 last/end/books/migrations/__pycache__/0002_alter_book_listing_time_alter_book_updated_time.cpython-310.pyc delete mode 100644 last/end/books/migrations/__pycache__/0003_book_pic.cpython-310.pyc delete mode 100644 last/end/record/migrations/0003_alter_record_book.py delete mode 100644 last/end/record/migrations/__pycache__/0003_alter_record_book.cpython-310.pyc delete mode 100644 last/end/user/migrations/0002_userinfo_pic_alter_userinfo_career.py delete mode 100644 last/end/user/migrations/__pycache__/0002_userinfo_pic_alter_userinfo_career.cpython-310.pyc diff --git a/front/package-lock.json b/front/package-lock.json index 672a8e8..13413d6 100644 --- a/front/package-lock.json +++ b/front/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.0", "dependencies": { "axios": "^1.5.0", -<<<<<<< HEAD + "element-plus": "^2.3.12", -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "vue": "^3.3.4", "vue-router": "^4.2.4", "vuex": "^4.1.0" @@ -34,7 +34,7 @@ "node": ">=6.0.0" } }, -<<<<<<< HEAD + "node_modules/@ctrl/tinycolor": { "version": "3.6.1", "resolved": "https://r.cnpmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", @@ -51,8 +51,8 @@ "vue": "^3.2.0" } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://r.cnpmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -405,7 +405,7 @@ "node": ">=12" } }, -<<<<<<< HEAD + "node_modules/@floating-ui/core": { "version": "1.4.1", "resolved": "https://r.cnpmjs.org/@floating-ui/core/-/core-1.4.1.tgz", @@ -428,14 +428,14 @@ "resolved": "https://r.cnpmjs.org/@floating-ui/utils/-/utils-0.1.2.tgz", "integrity": "sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://r.cnpmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, -<<<<<<< HEAD + "node_modules/@popperjs/core": { "name": "@sxzz/popperjs-es", "version": "2.11.7", @@ -460,8 +460,8 @@ "resolved": "https://r.cnpmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/@vitejs/plugin-vue": { "version": "4.3.4", "resolved": "https://r.cnpmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", @@ -582,7 +582,7 @@ "resolved": "https://r.cnpmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, -<<<<<<< HEAD + "node_modules/@vueuse/core": { "version": "9.13.0", "resolved": "https://r.cnpmjs.org/@vueuse/core/-/core-9.13.0.tgz", @@ -651,8 +651,8 @@ } } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://r.cnpmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -666,14 +666,14 @@ "node": ">= 8" } }, -<<<<<<< HEAD + "node_modules/async-validator": { "version": "4.2.5", "resolved": "https://r.cnpmjs.org/async-validator/-/async-validator-4.2.5.tgz", "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://r2.cnpmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -747,14 +747,14 @@ "resolved": "https://r.cnpmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, -<<<<<<< HEAD + "node_modules/dayjs": { "version": "1.11.9", "resolved": "https://r.cnpmjs.org/dayjs/-/dayjs-1.11.9.tgz", "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://r2.cnpmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -763,7 +763,7 @@ "node": ">=0.4.0" } }, -<<<<<<< HEAD + "node_modules/element-plus": { "version": "2.3.12", "resolved": "https://r.cnpmjs.org/element-plus/-/element-plus-2.3.12.tgz", @@ -789,8 +789,8 @@ "vue": "^3.2.0" } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/esbuild": { "version": "0.18.20", "resolved": "https://r.cnpmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -828,14 +828,14 @@ "@esbuild/win32-x64": "0.18.20" } }, -<<<<<<< HEAD + "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://r2.cnpmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://r2.cnpmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -953,7 +953,7 @@ "node": ">=0.12.0" } }, -<<<<<<< HEAD + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://r2.cnpmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -974,8 +974,8 @@ "lodash-es": "*" } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/magic-string": { "version": "0.30.3", "resolved": "https://r.cnpmjs.org/magic-string/-/magic-string-0.30.3.tgz", @@ -987,14 +987,14 @@ "node": ">=12" } }, -<<<<<<< HEAD + "node_modules/memoize-one": { "version": "6.0.0", "resolved": "https://r2.cnpmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://r.cnpmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1034,14 +1034,14 @@ "node": ">=0.10.0" } }, -<<<<<<< HEAD + "node_modules/normalize-wheel-es": { "version": "1.2.0", "resolved": "https://r.cnpmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://r2.cnpmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -1232,7 +1232,7 @@ "resolved": "https://r.cnpmjs.org/@babel/parser/-/parser-7.22.15.tgz", "integrity": "sha512-RWmQ/sklUN9BvGGpCDgSubhHWfAx24XDTDObup4ffvxaYsptOg2P3KG0j+1eWKLxpkX0j0uHxmpq2Z1SP/VhxA==" }, -<<<<<<< HEAD + "@ctrl/tinycolor": { "version": "3.6.1", "resolved": "https://r.cnpmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", @@ -1244,8 +1244,8 @@ "integrity": "sha512-PSBn3elNoanENc1vnCfh+3WA9fimRC7n+fWkf3rE5jvv+aBohNHABC/KAR5KWPecxWxDTVT1ERpRbOMRcOV/vA==", "requires": {} }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "@esbuild/android-arm": { "version": "0.18.20", "resolved": "https://r.cnpmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", @@ -1400,7 +1400,7 @@ "dev": true, "optional": true }, -<<<<<<< HEAD + "@floating-ui/core": { "version": "1.4.1", "resolved": "https://r.cnpmjs.org/@floating-ui/core/-/core-1.4.1.tgz", @@ -1423,14 +1423,14 @@ "resolved": "https://r.cnpmjs.org/@floating-ui/utils/-/utils-0.1.2.tgz", "integrity": "sha512-ou3elfqG/hZsbmF4bxeJhPHIf3G2pm0ujc39hYEZrfVqt7Vk/Zji6CXc3W0pmYM8BW1g40U+akTl9DKZhFhInQ==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://r.cnpmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, -<<<<<<< HEAD + "@popperjs/core": { "version": "npm:@sxzz/popperjs-es@2.11.7", "resolved": "https://r.cnpmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", @@ -1454,8 +1454,8 @@ "resolved": "https://r.cnpmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "@vitejs/plugin-vue": { "version": "4.3.4", "resolved": "https://r.cnpmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.3.4.tgz", @@ -1567,7 +1567,7 @@ "resolved": "https://r.cnpmjs.org/@vue/shared/-/shared-3.3.4.tgz", "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==" }, -<<<<<<< HEAD + "@vueuse/core": { "version": "9.13.0", "resolved": "https://r.cnpmjs.org/@vueuse/core/-/core-9.13.0.tgz", @@ -1608,8 +1608,8 @@ } } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "anymatch": { "version": "3.1.3", "resolved": "https://r.cnpmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -1620,14 +1620,14 @@ "picomatch": "^2.0.4" } }, -<<<<<<< HEAD + "async-validator": { "version": "4.2.5", "resolved": "https://r.cnpmjs.org/async-validator/-/async-validator-4.2.5.tgz", "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "asynckit": { "version": "0.4.0", "resolved": "https://r2.cnpmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -1687,20 +1687,20 @@ "resolved": "https://r.cnpmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, -<<<<<<< HEAD + "dayjs": { "version": "1.11.9", "resolved": "https://r.cnpmjs.org/dayjs/-/dayjs-1.11.9.tgz", "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "delayed-stream": { "version": "1.0.0", "resolved": "https://r2.cnpmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, -<<<<<<< HEAD + "element-plus": { "version": "2.3.12", "resolved": "https://r.cnpmjs.org/element-plus/-/element-plus-2.3.12.tgz", @@ -1723,8 +1723,8 @@ "normalize-wheel-es": "^1.2.0" } }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "esbuild": { "version": "0.18.20", "resolved": "https://r.cnpmjs.org/esbuild/-/esbuild-0.18.20.tgz", @@ -1755,14 +1755,14 @@ "@esbuild/win32-x64": "0.18.20" } }, -<<<<<<< HEAD + "escape-html": { "version": "1.0.3", "resolved": "https://r2.cnpmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "estree-walker": { "version": "2.0.2", "resolved": "https://r2.cnpmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -1844,7 +1844,7 @@ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true }, -<<<<<<< HEAD + "lodash": { "version": "4.17.21", "resolved": "https://r2.cnpmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -1861,8 +1861,8 @@ "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", "requires": {} }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "magic-string": { "version": "0.30.3", "resolved": "https://r.cnpmjs.org/magic-string/-/magic-string-0.30.3.tgz", @@ -1871,14 +1871,14 @@ "@jridgewell/sourcemap-codec": "^1.4.15" } }, -<<<<<<< HEAD + "memoize-one": { "version": "6.0.0", "resolved": "https://r2.cnpmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "mime-db": { "version": "1.52.0", "resolved": "https://r.cnpmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1903,14 +1903,14 @@ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true }, -<<<<<<< HEAD + "normalize-wheel-es": { "version": "1.2.0", "resolved": "https://r.cnpmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==" }, -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + "picocolors": { "version": "1.0.0", "resolved": "https://r2.cnpmjs.org/picocolors/-/picocolors-1.0.0.tgz", diff --git a/front/package.json b/front/package.json index 8b8876f..63a88e4 100644 --- a/front/package.json +++ b/front/package.json @@ -10,10 +10,7 @@ }, "dependencies": { "axios": "^1.5.0", -<<<<<<< HEAD "element-plus": "^2.3.12", -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 "vue": "^3.3.4", "vue-router": "^4.2.4", "vuex": "^4.1.0" diff --git a/front/src/App.vue b/front/src/App.vue index 7c1a9b8..ea963e9 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -17,8 +17,38 @@ export default { diff --git a/front/src/components/Home.vue b/front/src/components/Home.vue index c9a603b..a771bd9 100644 --- a/front/src/components/Home.vue +++ b/front/src/components/Home.vue @@ -53,12 +53,19 @@ $bgColor: #ECFBFB; .tit { padding-top: 50px; color: $aColor; + animation: leftIn .5s ease-in forwards; font: { size: 50px; weight: bold; } } + .des{ + opacity: 0; + animation: downIn .5s ease-in forwards; + animation-delay: .6s; + } + div { padding-top: 30px; } @@ -77,20 +84,13 @@ $bgColor: #ECFBFB; .middle { transition: all .4s ease; - transform: scale(1.2); + animation: upMove .5s linear forwards; + &:hover{ + transform: scale(1.1); + } } } - .image:hover .middle { - transform: scale(1); - } - - .image:hover .right { - transform: scale(1.1); - } - .image:hover .left { - transform: scale(1.1); - } } diff --git a/front/src/components/nav/nav.vue b/front/src/components/nav/nav.vue index 4f7222f..daecc5f 100644 --- a/front/src/components/nav/nav.vue +++ b/front/src/components/nav/nav.vue @@ -14,11 +14,7 @@ export default { }, { id: 2, -<<<<<<< HEAD name: "热门必读", -======= - name: "书目", ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 href: "/bookList" }, { @@ -29,23 +25,9 @@ export default { { id: 4, name: "查询和申报", -<<<<<<< HEAD + href: "/table" }, - // { - // id: 5, - // name: "书籍购买", - // href: "/buyBook" - // }, -======= - href: "#" - }, - { - id: 5, - name: "书籍购买", - href: "#" - }, ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 ] } }, @@ -212,14 +194,5 @@ $bgColor: #ECFBFB; } } -@keyframes leftIn { - 0% { - transform: translateX(-100%); - opacity: 0; - } - 100% { - transform: translateX(0); - opacity: 1; - } -} + \ No newline at end of file diff --git a/front/src/components/secondary/bookList.vue b/front/src/components/secondary/bookList.vue index a767dcd..12c5b8c 100644 --- a/front/src/components/secondary/bookList.vue +++ b/front/src/components/secondary/bookList.vue @@ -45,32 +45,38 @@ export default { console.log("数据请求失败" + err) }) }, - fixPage(type){ - // console.log(type) - // console.log(this.page) - if(type === 'up'){ - if(this.page === 1){ + fixPage(type) { + console.log(type) + console.log(this.page) + if (type === 'up') { + if (this.page === 1) { return false - }else { - this.page = this.page -1 + } else { + this.page = this.page - 1 } - }else if(type === 'down'){ -<<<<<<< HEAD - if(this.page === this.pagination_info.total_pages){ -======= - if(this.page === 3){ ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 - return false - }else { - this.page = this.page + 1 + } else if (type === 'down') { + + if (this.page === this.pagination_info.total_pages) { + + if (this.page === 3) { + return false + } else { + this.page = this.page + 1 + } } - }else{ + } else { this.page = type } + + }, + open(item){ + // console.log(item) + let isbn = item.fields.isbn + this.$router.push(`/details/?isbn=${isbn}`) } }, - watch:{ - page(newValue){ + watch: { + page(newValue) { this.getBooks() } }, @@ -80,6 +86,7 @@ export default { mounted() { this.getBooks() } + } @@ -87,7 +94,7 @@ export default {
-
+
{{ item.fields.bookname }}
@@ -130,14 +137,14 @@ $bgColor: #ECFBFB; .line { display: flex; margin-bottom: 40px; -<<<<<<< HEAD + animation: leftIn .5s linear forwards; //overflow: hidden; //box-sizing: border-box; box-shadow: 1px 1px 12px transparent; -======= + overflow: hidden; box-sizing: border-box; ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + transition: all .3s ease; img { @@ -169,10 +176,10 @@ $bgColor: #ECFBFB; .line:hover { box-shadow: 1px 1px 12px $aColor; -<<<<<<< HEAD + transform: scale(1.1); -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + border-radius: 10px; padding: 5px; } diff --git a/front/src/components/secondary/borrowing.vue b/front/src/components/secondary/borrowing.vue index 7ab9d3d..a165818 100644 --- a/front/src/components/secondary/borrowing.vue +++ b/front/src/components/secondary/borrowing.vue @@ -1,4 +1,3 @@ -<<<<<<< HEAD \ No newline at end of file diff --git a/front/src/components/secondary/details.vue b/front/src/components/secondary/details.vue new file mode 100644 index 0000000..9ca847a --- /dev/null +++ b/front/src/components/secondary/details.vue @@ -0,0 +1,199 @@ + + + + + \ No newline at end of file diff --git a/front/src/components/secondary/login.vue b/front/src/components/secondary/login.vue index 8bb7c76..874c7d7 100644 --- a/front/src/components/secondary/login.vue +++ b/front/src/components/secondary/login.vue @@ -2,11 +2,10 @@ // import Vue from 'vue' import {mapState} from "vuex"; -<<<<<<< HEAD + import axios from "axios"; -======= -import axios, {formToJSON, toFormData} from "axios"; ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + + export default { computed: { @@ -30,15 +29,9 @@ export default { }, methods: { clear() { -<<<<<<< HEAD this.uname = ''; this.password = ''; this.password2 = '' -======= - // this.uname = ''; - // this.password = ''; - // this.password2 = '' ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 }, Jump() { this.login = !this.login; @@ -89,13 +82,13 @@ export default { axiosLogin(url, formData) { axios // .post(url, formData, {withCredentials: true}) - .post(url,formData) + .post(url, formData) .then(res => { -<<<<<<< HEAD + // console.log(res.data) -======= + console.log(res.data) ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + if (res.data.code === 200) { localStorage.setItem('token', res.data.token); localStorage.setItem('pic', res.data.pic) @@ -111,33 +104,33 @@ export default { }) }, axiosRegister(url, formData) { -<<<<<<< HEAD + // console.log(url,formData) axios .post(url, formData) - .then(res => { + .then((res) => { // console.log(res) - if (res.data.code === 201) - { -======= - axios - .post(url, formData) - .then(res => { if (res.data.code === 201) { ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 - if (confirm(res.data.msg + ",是否直接登录")) { - this.submitForm('login') - } else { - this.clear(); - this.login = false; - } - } else { - alert(res.data.msg) + axios + .post(url, formData) + .then(res => { + if (res.data.code === 201) { + + if (confirm(res.data.msg + ",是否直接登录")) { + this.submitForm('login') + } else { + this.clear(); + this.login = false; + } + } else { + alert(res.data.msg) + } + }) + .catch(err => { + console.log("数据提交失败" + err) + }) } }) - .catch(err => { - console.log("数据提交失败" + err) - }) } }, watch: { @@ -191,11 +184,9 @@ export default {

用户登录

注册新用户

-<<<<<<< HEAD +
>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + @submit.prevent="check('login')">
-<<<<<<< HEAD +
>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + @submit.prevent="check('register')">
diff --git a/front/src/main.js b/front/src/main.js index 9d146ff..f4b1407 100644 --- a/front/src/main.js +++ b/front/src/main.js @@ -3,21 +3,35 @@ import './style.css' import App from './App.vue' import router from "./router/router.js"; import store from "./store/store.js"; -<<<<<<< HEAD import ElementPlus from 'element-plus' import 'element-plus/dist/index.css' import axios from "axios"; +// axios.interceptors.request.use( +// (config) => { +// const token = localStorage.getItem('token'); +// if (token) { +// config.headers.Authorization = `Token ${token}`; +// } else { +// // 如果没有令牌,您可以选择在此处执行适当的处理,例如重定向到登录页面或抛出错误 +// // 这里是一个示例,您可以根据您的需求进行更改 +// throw new Error('No token found. Please log in.'); +// } +// return config; +// }, +// (error) => { +// return Promise.reject(error); +// } +// ); + +// 在请求中包含 token ,如果没有token 同样也会正常发送, +// 需要登录的页面将会在当前页面进行拦截 axios.interceptors.request.use( (config) => { const token = localStorage.getItem('token'); if (token) { config.headers.Authorization = `Token ${token}`; - } else { - // 如果没有令牌,您可以选择在此处执行适当的处理,例如重定向到登录页面或抛出错误 - // 这里是一个示例,您可以根据您的需求进行更改 - throw new Error('No token found. Please log in.'); } return config; }, @@ -30,13 +44,6 @@ const app = createApp(App) app.use(store) app.use(router) app.use(ElementPlus) -======= - - -const app = createApp(App) -app.use(store) -app.use(router) ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 app.mount('#app') diff --git a/front/src/router/router.js b/front/src/router/router.js index 5b360fd..1297cba 100644 --- a/front/src/router/router.js +++ b/front/src/router/router.js @@ -3,11 +3,8 @@ import Home from "../components/Home.vue"; import Login from "../components/secondary/login.vue"; import BookList from "../components/secondary/bookList.vue"; import Borrowing from "../components/secondary/borrowing.vue"; -<<<<<<< HEAD import Table from "../components/secondary/table.vue" - -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 +import Details from "../components/secondary/details.vue"; const router = createRouter({ @@ -16,13 +13,24 @@ const router = createRouter({ {path: '/', component: Home}, {path: '/login', component: Login}, {path: '/bookList', component: BookList}, - {path: '/borrowing', component: Borrowing}, -<<<<<<< HEAD - {path: '/table', component: Table}, - -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + {path: '/borrowing', component: Borrowing,meta: {requiresAuth: true}}, + {path: '/table', component: Table, meta: {requiresAuth: true}}, + // meta: {requiresAuth: true} 需要身份认证的路由 + {path:'/details',component:Details,meta:{requiresAuth: true}} ], }) +// 创建导航守卫 +router.beforeEach((to, from, next) => { + const token = localStorage.getItem('token'); + + // 如果路由需要身份验证,但没有令牌,则重定向到登录页面 + if (to.meta.requiresAuth && !token) { + alert("请先进行登录...") + next('/login'); // 这里的'/login'应该是您的登录页面路由 + } else { + next(); // 继续导航 + } +}); + export default router; \ No newline at end of file diff --git a/front/src/store/store.js b/front/src/store/store.js index 91c05f8..30e5f0b 100644 --- a/front/src/store/store.js +++ b/front/src/store/store.js @@ -4,16 +4,12 @@ import {createStore} from 'vuex' const store = createStore({ state() { return { - // baseUrl: "http://127.0.0.1:8000" - baseUrl: "http://localhost:8000", + baseUrl: "http://127.0.0.1:8000", + // baseUrl: "http://localhost:8000", name:"", -<<<<<<< HEAD picUrl:"", borrowStatus:true, buyStatus:true, -======= - picUrl:"" ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 } }, mutations: { @@ -22,15 +18,12 @@ const store = createStore({ }, setPicUrl(state,value){ state.picUrl = value -<<<<<<< HEAD }, setBorrStatus(state,value){ state.borrowStatus = value }, setBuyStatus(state,value){ state.buyStatus = value -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 } } }) diff --git a/last/.idea/modules.xml b/last/.idea/modules.xml deleted file mode 100644 index d27540d..0000000 --- a/last/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/last/end/books/__pycache__/urls.cpython-310.pyc b/last/end/books/__pycache__/urls.cpython-310.pyc index 041424edb8bd3540a38e62eb05ba49707be8cf9e..63a1969804a3d5420edb5c7a7a777aeaba4374c6 100644 GIT binary patch delta 22 ccmdnUw2_H7pO=@50SK&)u%=Gh$g9E#0638Z0fCun}SLmtd&bU(AmHc_;)6DG8qx>QLwAqvvtda1d-|o!skb~Kq ztv0c=rJb1fxOTO7VfBROTEJhjIi9Cr(41RU#Rm^iRXXD63ou z2az#2+%(G9^j%Y7*aX~KW~n@<`$U!xbd{`>zvv5cQ~K=rw4jo zu%rv#0lzl)ZtdIPJ@A`z&uj047vSH{y{tXe)`aEGm8%;CyQUL6_pW$hUlWLgRz-Qw zy3<#9BYT()l7N^sOvLGU5D&AX$beZ#D8;l3sli7uZNQ%Kfq|^-5AQ#IG7IP_ zq6Mhj&%-!}M`385AnL}a7&(BzG0&_iB&%p%B5-I=4AS(tufsevODJnBLsZExk16@!-#di|t0j1`bIBu+HYhZ)A# z5ETwX&4YYU6QE(E;yc@W`)Ue8W#=kMwPJW@5`lA&^fk=LLNbF=*FQ&RlWnNC)f|SG zD6dekcgO2x*>P7!I#SCBYk2{#@=ph`y6B!I@%bCb#S%zB1L{-3%ojc_xLOAk2IiXY cuQ*^IpKPPUlP3)yyP8RRK|G^^iiu$MKe-%(XaE2J diff --git a/last/end/books/migrations/0001_initial.py b/last/end/books/migrations/0001_initial.py index 310df28..e2ad6b8 100644 --- a/last/end/books/migrations/0001_initial.py +++ b/last/end/books/migrations/0001_initial.py @@ -1,8 +1,4 @@ -<<<<<<< HEAD -# Generated by Django 4.2.5 on 2023-09-15 06:11 -======= -# Generated by Django 4.2.5 on 2023-09-10 11:05 ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 +# Generated by Django 4.2.5 on 2023-09-17 14:29 from django.db import migrations, models @@ -22,22 +18,14 @@ class Migration(migrations.Migration): ('bookname', models.CharField(max_length=64, verbose_name='书名')), ('author', models.CharField(max_length=64, verbose_name='作者')), ('isbn', models.CharField(max_length=20, unique=True, verbose_name='ISBN')), -<<<<<<< HEAD ('Listing_time', models.DateTimeField(verbose_name='出版时间')), ('updated_time', models.DateTimeField(auto_now_add=True, verbose_name='添加时间')), -======= - ('Listing_time', models.DateTimeField(auto_now_add=True, verbose_name='出版时间')), - ('updated_time', models.DateTimeField(auto_now=True, verbose_name='添加时间')), ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 ('type', models.CharField(max_length=32, verbose_name='类型')), ('lang', models.CharField(max_length=32, verbose_name='语言')), ('publisher', models.CharField(max_length=32, verbose_name='出版社')), ('price', models.DecimalField(decimal_places=2, max_digits=8, verbose_name='定价')), ('intro', models.CharField(default='', max_length=512, verbose_name='描述')), -<<<<<<< HEAD ('pic', models.CharField(default='', max_length=64, verbose_name='封面')), -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 ], ), ] diff --git a/last/end/books/migrations/0002_alter_book_listing_time_alter_book_updated_time.py b/last/end/books/migrations/0002_alter_book_listing_time_alter_book_updated_time.py deleted file mode 100644 index 225b0dd..0000000 --- a/last/end/books/migrations/0002_alter_book_listing_time_alter_book_updated_time.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.2.5 on 2023-09-10 11:13 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('books', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='book', - name='Listing_time', - field=models.DateTimeField(verbose_name='出版时间'), - ), - migrations.AlterField( - model_name='book', - name='updated_time', - field=models.DateTimeField(auto_now_add=True, verbose_name='添加时间'), - ), - ] diff --git a/last/end/books/migrations/0003_book_pic.py b/last/end/books/migrations/0003_book_pic.py deleted file mode 100644 index 43e4565..0000000 --- a/last/end/books/migrations/0003_book_pic.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.5 on 2023-09-10 12:38 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('books', '0002_alter_book_listing_time_alter_book_updated_time'), - ] - - operations = [ - migrations.AddField( - model_name='book', - name='pic', - field=models.CharField(default='', max_length=64, verbose_name='封面'), - ), - ] diff --git a/last/end/books/migrations/__pycache__/0001_initial.cpython-310.pyc b/last/end/books/migrations/__pycache__/0001_initial.cpython-310.pyc index 63ec4b8cc3acb93c0849aeb282b2d01a0f7c354f..23ef66566bbe3ff51af19b6f63118daadbe397f4 100644 GIT binary patch delta 20 acmcb}d6APlpO=@50SKab**9_@V*vm#$plCM delta 20 acmcb}d6APlpO=@50SFqtGH>KQ#sUC0CHz8Y4Mb+z~Ucc&YMx%(4U4FX(5RCn`#isdG?2_vz6o3IQ zS;bRciBxd*hJgU@69W(V-23RI9{7hW39hJ@CBj5ik+-TVnp&Gd)c}@yW{);4q+*v` zPbeTuIj~d!&w1*hKMyPc4(40nL$Km7Slyvp4h>-l(Mni67ikC&h(0#M{X1T|L@;fd zciP0`@%X7M>Y^)Dnfewq@m`_3qRwSkRM^LKf%DJ5FHgQ)oc+8y`;l-Hf53LyXq2_8 zF!4x`72zu5Tg(J+3oOCJ{Q^{n;3gfpQ5V1doS%NZ9VJYx`mT|6b1W4=YgHd4Lla6j zOiB|;NyGaRDUYRm->cFR*a~ogHDEm}P`C6*%tWus4%^q3y7eqDnh^UDsc@Kyng!l2 z{yS?QQHKlH{p5KzBMI3tPP4sY+NyTBuWFTJg>`qh)E!n?sdSeSVdfT>-M?W*D|{xE zrIz+gmK*Ea#5b3*vskwF6Aj4qV+tV?p8wAe1Q$Hw{>?gzDGRS%=Rx9|A(zF4pBCATD&?V;HA{sRU5)LsAp diff --git a/last/end/books/migrations/__pycache__/0003_book_pic.cpython-310.pyc b/last/end/books/migrations/__pycache__/0003_book_pic.cpython-310.pyc deleted file mode 100644 index 4c9101fa70d8abe9f76cd645e74aca530654a975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 657 zcmYjPy^ho{5cW^9n?!dAQ55H#F2*F}*mXJ;;#C4a;TuqA@_9)X6A zj*@ra4NQqB_7#v$$Jh(H9mykqGoSp8Kf60TOc=$_?^p1HGxp1Y{Rjx0&@%TZ0RvvM zhG)DHnc(at0|D|A1BrYsKgvu(aK_SbOI(%;n>1B9=&|ZrV`ohVSeun=?MFo5gqB%Q zLY8r0nE+n$Ok%JOodC|(a|j@W8O$#wM3<7f5yT{w*!c9n1__2m*S$8`!^L88U+H?p zLAi>mD>GJYsm7|o{rc2{9ua&!3mnzTzFJwfbt6qPO25B-*na+!N;?NU*Hb;xt@L|U zV_S|F_TViJMQ2d8x>kwd% zEnvH<&*g%zLo2jjTBCH-q~F&I)sfQpAJ|u7gl;!Ef>4 tD!TUlWg6HR*19dbV<`OOeqP_anQgbbOXt|=@y>%M^zE2&8n?xf{0ol6xlsTB diff --git a/last/end/books/urls.py b/last/end/books/urls.py index b9d1558..74aa34a 100644 --- a/last/end/books/urls.py +++ b/last/end/books/urls.py @@ -2,10 +2,6 @@ from django.urls import path from . import views urlpatterns = [ -<<<<<<< HEAD path('all/', views.all_view), - path('query/',views.query_view) -======= - path('all/', views.all_view) ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + path('query/',views.query_view), ] diff --git a/last/end/books/views.py b/last/end/books/views.py index 6bb606b..b62c045 100644 --- a/last/end/books/views.py +++ b/last/end/books/views.py @@ -1,26 +1,12 @@ from books.models import Book from django.core import serializers from django.core.paginator import Paginator -<<<<<<< HEAD -from django.http import JsonResponse, HttpResponse -======= + from django.http import JsonResponse ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + import json -# def all_view(request): -# """ -# :param request: None -# :return: books[] -# """ -# if request.method == 'GET': -# books = list(Book.objects.all().values()) -# data = { -# 'code': 200, -# 'books': books -# } -# return JsonResponse(data, safe=False, json_dumps_params={'ensure_ascii': False}) def all_view(request): books = Book.objects.all() paginator = Paginator(books, 4) @@ -43,13 +29,19 @@ def all_view(request): } return JsonResponse({"data": data, "pagination_info": pagination_info}, safe=False) -<<<<<<< HEAD def query_view(request): + + # 书籍查询, + # 参数: + # name + # 书籍的某个信息 + # way + # 书籍信息参数 name = request.POST.get('name') way = request.POST.get('way') - print(name,way) + # print(name, way) if way == 'bookname': books = Book.objects.filter(bookname=name) @@ -66,8 +58,5 @@ def query_view(request): book_data = serializers.serialize('json', books) book_data = json.loads(book_data) - # 使用JsonResponse返回数据 return JsonResponse({'books': book_data}, safe=False) -======= ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 diff --git a/last/end/end/__pycache__/settings.cpython-310.pyc b/last/end/end/__pycache__/settings.cpython-310.pyc index b18b25b54dc10436d74f7a30442a09cc6b042515..e117df581f361318cb709216b4f82c64f27e20fa 100644 GIT binary patch delta 20 acmcaAepQ@1pO=@50SML|X5GkriW>kq=LLQM delta 20 acmcaAepQ@1pO=@50SJEVV%o@kiW>kss0F+L diff --git a/last/end/end/__pycache__/urls.cpython-310.pyc b/last/end/end/__pycache__/urls.cpython-310.pyc index b77d3e4071cdbb7733135db37a4f7efe00747234..d95e046228ebb8fb7c352deb35dfd32080b12c4a 100644 GIT binary patch delta 36 ncmbQnJdK$*pO=@50SLnOv!-%yz` delta 36 ncmbQnJdK$*pO=@50SL0%8B-ND^42i&G72#Au<$T~Ajcm7b>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 ] MIDDLEWARE = [ diff --git a/last/end/end/urls.py b/last/end/end/urls.py index eb06e86..5a85e6d 100644 --- a/last/end/end/urls.py +++ b/last/end/end/urls.py @@ -1,15 +1,10 @@ - from django.contrib import admin from django.urls import path, include -# from . import views + urlpatterns = [ path('admin/', admin.site.urls), path('user/', include('user.urls')), -<<<<<<< HEAD path('books/', include('books.urls')), - path('record/',include('record.urls')) -======= - path('books/', include('books.urls')) ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + path('record/', include('record.urls')), ] diff --git a/last/end/record/__pycache__/models.cpython-310.pyc b/last/end/record/__pycache__/models.cpython-310.pyc index f35da33bc2a9e996c8d30d01509ce7ac0734a8ca..0bb13d99e2aae86ab13d3f9f5e62eb4a191ebcb2 100644 GIT binary patch delta 133 zcmdnOx|o$WpO=@50SH`q*i#QqqW0RWhq9U=e# delta 172 zcmZ3?x`mZDpO=@50SE#aSW?eT&w6R(FzhiEbtu>iH+Vk^zdEG$heWdm}acWryt&^Xzg zaW|VNkXs}=`3GYdqtIl3CM_+909X`6hyjUP95%W6DWy57c8ow?F~~R`1~Fy;9GxZc diff --git a/last/end/record/__pycache__/views.cpython-310.pyc b/last/end/record/__pycache__/views.cpython-310.pyc index fd7bef7b1631d0a329ba2433bb45ed21dde75dce..e175cfde79b51aa48238795f6a81a1641b0336fd 100644 GIT binary patch delta 403 zcmYk0KTE?v7{>3tT>dsmC6*3SQCnMVU9=z~eg(H8qKj59*hWmk^@=FzAkGCLjt)9F zi*(m7p$?h+2IA_XcP)tT3qQE$dEVo>_8vSZavTeZ`8IUF_2j&Rdn;ZE3J`@8%(l`m znD1~kfdnVYl>+F(8f*3d3$p)5vIlw+S~q~G&dhPyOVW7Z9M z`k`DxB|Rjqa!C}nY#ZBPfDKsjz=a~E@V!6frvSDpDR}F+I== fu#)!m4QP%Y^&HGprP=&T{Lj7`Yx=Aq%6sq&lw4d6 delta 390 zcmYk1Jxc>I7{~MEa<9ER<*E)L=@pDCP+_ckMwG(ToG5HP{a?YUK%%n%NHlshwI>r$!S}J9el!#0EM^P3BHn8qF>>qVp!}ZHa4h2g31_nS(-Eg~Pwb Pzpi+*w#^kw{w;tXzF$_k diff --git a/last/end/record/migrations/0001_initial.py b/last/end/record/migrations/0001_initial.py index a1e727e..d34425f 100644 --- a/last/end/record/migrations/0001_initial.py +++ b/last/end/record/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.5 on 2023-09-15 06:11 +# Generated by Django 4.2.5 on 2023-09-17 14:29 from django.db import migrations, models import django.db.models.deletion diff --git a/last/end/record/migrations/0002_initial.py b/last/end/record/migrations/0002_initial.py index f561d89..ac0b2c9 100644 --- a/last/end/record/migrations/0002_initial.py +++ b/last/end/record/migrations/0002_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.5 on 2023-09-15 06:11 +# Generated by Django 4.2.5 on 2023-09-17 14:29 from django.conf import settings from django.db import migrations, models @@ -10,8 +10,8 @@ class Migration(migrations.Migration): initial = True dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('record', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ diff --git a/last/end/record/migrations/0003_alter_record_book.py b/last/end/record/migrations/0003_alter_record_book.py deleted file mode 100644 index 7e3c835..0000000 --- a/last/end/record/migrations/0003_alter_record_book.py +++ /dev/null @@ -1,20 +0,0 @@ -# Generated by Django 4.2.5 on 2023-09-15 06:57 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - ('books', '0001_initial'), - ('record', '0002_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='record', - name='book', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='books.book', unique=True), - ), - ] diff --git a/last/end/record/migrations/__pycache__/0001_initial.cpython-310.pyc b/last/end/record/migrations/__pycache__/0001_initial.cpython-310.pyc index 2a0bbadc2567e40d952cca7f39d52772a1b7d18b..e3977038607ad627090f19cdce7847882c09c09b 100644 GIT binary patch delta 20 acmeys{(+r4pO=@50SKab**9`OWd;B>SOlN| delta 20 acmeys{(+r4pO=@50SFqtGH>L5$_xNIw*{#H diff --git a/last/end/record/migrations/__pycache__/0002_initial.cpython-310.pyc b/last/end/record/migrations/__pycache__/0002_initial.cpython-310.pyc index c4c9e7d8e55d631b9e61168426435014987e56c8..bad95a0f49863a3eab8c2d6bd49bf1d88fc033d3 100644 GIT binary patch delta 44 ycmeBT>tf^1=jG*M0D@><_KDmZc~Y2CSr)LSvSqO^WZZaS9V0UnGuPxwrilQ}8wyeY delta 44 ycmeBT>tf^1=jG*M0D^|E%oDjc@}#mXU`=JqVqeIZ!nE z*`oGR`I>QrYua}m#yw>(6oSccfE1G`zs{ljCOZI zfGp*}QUM%9AyN-z<+~afR1*xVs0ymMdH_BIFuC<0y!8s6P9dVIv5l?{<*2s5ZrhKY zoh}xOXR6d?U*EzO}(lmp3~k zM?B1<{9 diff --git a/last/end/user/__pycache__/views.cpython-310.pyc b/last/end/user/__pycache__/views.cpython-310.pyc index 81b7a5350ee10c13b66c1c1bc5bcc94e8cffa7e1..fe5054dcd4cd01d7da191a9fa505941052dc0db4 100644 GIT binary patch delta 428 zcmYjM%}T>S5Y8k`nxEaI*496&q%8=+zZVcGdKBtG1nEVjyVe%lz^2ucAha(~_9d)` z9`q5sdKZGP;K7@C(VZUDUFPGPZ)U!oz4xcok12IEb*9fI|F*||2|DAAqmUDpZNU(j z&76@oga&0U^F~_3XXIFm==kyEX&sgU99h%Lj;9>z6A)B(^j>jJWg@R2@>8qJ`_MKzeBN(BO*|c+Jl6PcJCq<1=QwI%Qgi+?{hZML@4i!L-6E_u>}?RWxRS0 zw&B*olW&>L0zQ>ylR>k|lSKGf$jOqqW)+bVSu?9E3rJ^!i^wbl17S(tn$^=)qK z!HeiJ3Zhd+;Rv5lZfBkNySc?LozX`S{*@-@Nbf=3_7n!#oJ;%$$d(mQ1`s zco7~CmhP?!CY)Z7g>eYXaJLs_jkp0!a^Y>mA&9#0kJur^lY)!jh{aPPywAGP;Pr!6 z7b^FjRC{?}NyDQxb+asXWWPw0%|eP#zvcma?O6+6V2sy~0V93Q>d#D@2+tenhSfwS zi=AAcufJFeFspx9w^kym(-WLDP`Ra&nD)1FoTc0h<(vd1c^orr>oxlhaQ)I=hDCj9 zfA@Woae_dztL{n6Ql(O}b)+A~MFML0kMVefvAcUc c%SG9fH^3+qZICk#4dB2nbAdbH+I8UV-}Cv00ssI2 diff --git a/last/end/user/migrations/0001_initial.py b/last/end/user/migrations/0001_initial.py index c47d0b4..712f1cd 100644 --- a/last/end/user/migrations/0001_initial.py +++ b/last/end/user/migrations/0001_initial.py @@ -1,8 +1,4 @@ -<<<<<<< HEAD -# Generated by Django 4.2.5 on 2023-09-15 06:11 -======= -# Generated by Django 4.2.5 on 2023-09-10 06:33 ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 +# Generated by Django 4.2.5 on 2023-09-17 14:29 import django.contrib.auth.models import django.contrib.auth.validators @@ -33,12 +29,8 @@ class Migration(migrations.Migration): ('is_staff', models.BooleanField(default=False, help_text='Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField(default=True, help_text='Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), -<<<<<<< HEAD ('career', models.CharField(default='', max_length=24, verbose_name='职业')), - ('pic', models.CharField(default='', max_length=64, verbose_name='头像')), -======= - ('career', models.CharField(default='', max_length=24)), ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 + ('picHead', models.CharField(default='', max_length=64, verbose_name='头像')), ('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')), ('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')), ], diff --git a/last/end/user/migrations/0002_userinfo_pic_alter_userinfo_career.py b/last/end/user/migrations/0002_userinfo_pic_alter_userinfo_career.py deleted file mode 100644 index ea644b4..0000000 --- a/last/end/user/migrations/0002_userinfo_pic_alter_userinfo_career.py +++ /dev/null @@ -1,23 +0,0 @@ -# Generated by Django 4.2.5 on 2023-09-11 02:11 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('user', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='userinfo', - name='pic', - field=models.CharField(default='', max_length=64, verbose_name='头像'), - ), - migrations.AlterField( - model_name='userinfo', - name='career', - field=models.CharField(default='', max_length=24, verbose_name='职业'), - ), - ] diff --git a/last/end/user/migrations/__pycache__/0001_initial.cpython-310.pyc b/last/end/user/migrations/__pycache__/0001_initial.cpython-310.pyc index 9bdb05ad5dcf9d7006743ef2b0b0736d5086a16c..27df4044f88173cdd4b419cc1ce50a32de20d902 100644 GIT binary patch delta 36 qcmbO%JYASKpO=@50SKab*;92k@-AoPU@yo__DD@k*}Q}GHZuT^WC>;f delta 32 mcmbO(JXx4GpO=@50SFqtGN)>6d=H*HRB^T1BNyI@Y-Jyu)F6fvfBXt{H3 zw%uQ>T=;7OkIe&8F%vTS7xe@e{5FsN?5y~z%RC-MK7qNeih3U=-J;!kU2r%4#tIdE R{B%RvGaj0RZg<38`5)W$$!-7u diff --git a/last/end/user/models.py b/last/end/user/models.py index 43b4594..a452ba0 100644 --- a/last/end/user/models.py +++ b/last/end/user/models.py @@ -4,4 +4,4 @@ from django.contrib.auth.models import AbstractUser class UserInfo(AbstractUser): career = models.CharField("职业", max_length=24, default="") - pic = models.CharField("头像", max_length=64, default="") + picHead = models.CharField("头像", max_length=64, default="") diff --git a/last/end/user/views.py b/last/end/user/views.py index b6f9977..4168095 100644 --- a/last/end/user/views.py +++ b/last/end/user/views.py @@ -4,13 +4,8 @@ from django.contrib.auth import authenticate, login from django.http import JsonResponse from rest_framework.authtoken.models import Token -<<<<<<< HEAD + from rest_framework.decorators import api_view -======= -from rest_framework.decorators import api_view, permission_classes ->>>>>>> 326b59aa53e211a6e29b8a033e45707b234981e4 -from rest_framework.response import Response -from rest_framework.permissions import IsAuthenticated @api_view(['POST']) -- GitLab