├── blog_dv
├── media
│ └── .gitkeep
├── article
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── tests.py
│ ├── apps.py
│ ├── admin.py
│ ├── filters.py
│ ├── permissions.py
│ ├── views.py
│ ├── models.py
│ └── serializers.py
├── blog_dv
│ ├── __init__.py
│ ├── asgi.py
│ ├── wsgi.py
│ ├── urls.py
│ └── settings.py
├── comment
│ ├── __init__.py
│ ├── tests.py
│ ├── admin.py
│ ├── apps.py
│ ├── views.py
│ ├── permissions.py
│ ├── models.py
│ └── serializers.py
├── jwt_token
│ ├── __init__.py
│ ├── views.py
│ └── serializers.py
├── user_info
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ ├── admin.py
│ ├── apps.py
│ ├── permissions.py
│ ├── serializers.py
│ └── views.py
└── manage.py
├── frontend
├── README.md
├── src
│ ├── stores
│ │ ├── index.js
│ │ └── user.js
│ ├── http
│ │ ├── login.js
│ │ ├── article.js
│ │ └── index.js
│ ├── views
│ │ ├── Home.Vue
│ │ ├── ArticleDetail.vue
│ │ ├── UserCenter.vue
│ │ ├── Login.vue
│ │ ├── ArticleCreate.vue
│ │ └── ArticleEdit.vue
│ ├── main.js
│ ├── components
│ │ ├── BlogFooter.vue
│ │ ├── SearchBox.vue
│ │ ├── BlogHeader.vue
│ │ ├── Comments.vue
│ │ └── ArticleList.vue
│ ├── assets
│ │ └── vue.svg
│ ├── App.vue
│ ├── router
│ │ └── index.js
│ └── utils
│ │ └── authorization.js
├── .gitignore
├── index.html
├── vite.config.js
├── package.json
├── public
│ └── vite.svg
└── package-lock.json
├── images
└── home.jpg
├── .gitignore
├── README.md
├── requirements.txt
└── LICENSE
/blog_dv/media/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/article/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/blog_dv/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/comment/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/jwt_token/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/user_info/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/article/migrations/__init__.py:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/blog_dv/article/tests.py:
--------------------------------------------------------------------------------
1 | # from django.test import TestCase
2 |
--------------------------------------------------------------------------------
/frontend/README.md:
--------------------------------------------------------------------------------
1 | # 安装依赖
2 |
3 | - npm install axios
4 | - npm install vue-router@4
5 |
--------------------------------------------------------------------------------
/images/home.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Sonder-MX/Blogs-Django-Vue/HEAD/images/home.jpg
--------------------------------------------------------------------------------
/blog_dv/user_info/models.py:
--------------------------------------------------------------------------------
1 | from django.db import models
2 |
3 | # Create your models here.
4 |
--------------------------------------------------------------------------------
/blog_dv/user_info/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/blog_dv/comment/tests.py:
--------------------------------------------------------------------------------
1 | from django.test import TestCase
2 |
3 | # Create your tests here.
4 |
--------------------------------------------------------------------------------
/blog_dv/user_info/admin.py:
--------------------------------------------------------------------------------
1 | # from django.contrib import admin
2 |
3 | # Register your models here.
4 | # user: suer1
5 | # pwd: 12345678
6 |
--------------------------------------------------------------------------------
/frontend/src/stores/index.js:
--------------------------------------------------------------------------------
1 | import { createPinia } from "pinia"
2 |
3 | const pinia = createPinia()
4 |
5 | // 主仓库
6 | export default pinia
7 |
--------------------------------------------------------------------------------
/blog_dv/comment/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | from .models import Comment
4 |
5 | # Register your models here.
6 | admin.site.register(Comment)
7 |
--------------------------------------------------------------------------------
/blog_dv/article/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class ArticleConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'article'
7 |
--------------------------------------------------------------------------------
/blog_dv/comment/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class CommentConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'comment'
7 |
--------------------------------------------------------------------------------
/blog_dv/user_info/apps.py:
--------------------------------------------------------------------------------
1 | from django.apps import AppConfig
2 |
3 |
4 | class UserInfoConfig(AppConfig):
5 | default_auto_field = 'django.db.models.BigAutoField'
6 | name = 'user_info'
7 |
--------------------------------------------------------------------------------
/frontend/src/http/login.js:
--------------------------------------------------------------------------------
1 | import request from "."
2 |
3 | // 用户登录
4 | export const reqLogin = (data) => request.post("/token/", data)
5 |
6 | // 用户注册
7 | export const reqRegister = (data) => request.post("/user/", data)
8 |
--------------------------------------------------------------------------------
/blog_dv/user_info/permissions.py:
--------------------------------------------------------------------------------
1 | from rest_framework.permissions import SAFE_METHODS, BasePermission
2 |
3 |
4 | class IsSelfOrReadOnly(BasePermission):
5 | def has_object_permission(self, request, view, obj):
6 | if request.method in SAFE_METHODS:
7 | return True
8 | return obj == request.user
9 |
--------------------------------------------------------------------------------
/blog_dv/article/admin.py:
--------------------------------------------------------------------------------
1 | from django.contrib import admin
2 |
3 | from .models import Article, Avatar, Category, Tag
4 |
5 | # Register your models here.
6 | # user name: admin
7 | # pwd: drf-vue
8 | admin.site.register(Article)
9 | admin.site.register(Category)
10 | admin.site.register(Tag)
11 | admin.site.register(Avatar)
12 |
--------------------------------------------------------------------------------
/frontend/src/http/article.js:
--------------------------------------------------------------------------------
1 | import request from "."
2 |
3 | // 获取文章列表
4 | export const getArticleList = (page) => {
5 | if (page <= 1) {
6 | page = 1
7 | }
8 | return request.get("/article/?page=" + page)
9 | }
10 |
11 | // 根据id获取文章
12 | export const getArticleById = (articleId) => request.post(`/article/${articleId}/`)
13 |
--------------------------------------------------------------------------------
/frontend/src/views/Home.Vue:
--------------------------------------------------------------------------------
1 |
2 |
8 | 本文由 {{ art.article.author.username }} 发布于 {{ formatted_time(art.article.created) }}
9 |
10 |
已有 {{ comments.length }} 条评论
19 |