路飞项目 - 前端准备
路飞项目 - 前端准备
1 路飞前台全局css,全局配置文件
1.1 vue-cli创建项目,整理项目
通过vue-cli创建vue3项目,选择安装vuex和router插件
并整理项目
App.vue
<template> <div id="app"> <router-view/> </div> </template>
router/index.js
const routes = [ { path: '/', name: 'home', component: HomeView }, ]
HomeView.vue
<template> <div class="home"> <h1>首页</h1> </div> </template> <script> export default { name: 'HomeView', } </script>
其它页面组件和小组件都删除
1.2 全局css清理
由于全局的样式需要我们自己去调整,而html的各种标签自带一些样式,以及margin、boder等等,所以我们需要统一将默认样式去掉
① 第一步:在assets中新建global.css文件清除默认样式
/* 声明全局样式和项目初始化,去掉标签的默认样式*/ body, h1, h2, h3, h4, h5, h6, p, table, tr, td, ul, li, a, form, input, select, option, textarea { margin: 0; padding: 0; font-size: 15px; } a { text-decoration: none; color: #333; } ul { list-style: none; } table { border-collapse: collapse; /* 合并边框 */ }
② 第二步:全局生效 - main.js中配置
使用global.css中设置的全局css样式,在main.js中导入即可生效
import '@/assets/global.css'
1.3 全局js
全局中的一些常常用到的js变量,我们可以新建一个js文件来存放,这样就不用反复定义了。
比如axios发送的url地址,我们可以封装到全局js中,方便修改。
组件中发送url的两种方法
(1)方法一:放到vue的原型中
① 新建全局js文件:assets - 新建settings.js
// 声明全局js变量 export default { // url地址 BASE_URL:'http://127.0.0.1:9000/api/v1' }
② 在main.js中引入 - 放入vue原型中
// 在全局js中导入 import settings from "@/assets/settings"; 将 settings 的全局js变量放入Vue原型中 Vue.prototype.$settings = settings
③ 在任意组件中导入使用
this.$settings.BASE_URL
(2)方法二:做成混入
2 axios放入Vue原型中
在与后端交互中常常用到axios,所以我们应该也讲axios放入Vue原型中
使用步骤
① 第一步:安装axios插件
npm install axios -S
② 第二步:将axios导入main.js-把axios放到vue原型中
import axios from "axios"; Vue.prototype.$axios = axios
③ 在组件中使用
this.$axios.get(this.$settings.BASE_URL+'/media/球球.jpeg').then(res=>{})
3 安装vue-cookies并放入Vue原型
后期登录成功之后,token存在cookie中,所以我们也要重复用到vue-cookies,要将其放入原型中以便使用
使用步骤
① 第一步:安装vue-cookies
npm install vue-cookies -S
② 第二步:将vue-cookies导入main.js 并把vue-cookies放到vue原型中
import cookies from 'vue-cookies' Vue.prototype.$cookies = cookies
③ 第三步:在组件中使用
this.$cookies.get() this.$cookies.set()
4 安装并使用elementui
使用步骤
① 第一步:安装elementui
npm install element-ui -S
② 第二步:在main.js中配置
import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI)
③ 第三步:需要使用的地方直接复制
5 后台主页模块 - 模型表设计
5.1 接口分析
- 轮播图接口 - 推荐课程接口(暂时没写) - 推荐老师(没有) - 学员评论(没有)
5.2 在后端中编写 轮播图的表模型
① 第一步:在后端apps文件夹下建立home
切换到apps文件夹下,在终端中执行
python ../../manage.py startapp home
② 第二步:在utils下新建 common_models.py 文件夹
-
用于存储基表,这样其他app的共有字段不用再重编,只需要继承基表
-
表明该基表只用来继承,不会在执行迁移命令的时候生成实体表,所以abstract为true
from django.db import models class BaseModel(models.Model): """表的基类,包含了很多共有字段""" create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') update_time = models.DateTimeField(auto_now_add=True, verbose_name='更新时间') is_delete = models.BooleanField(default=False, verbose_name='是否删除') is_show = models.BooleanField(default=True, verbose_name='是否上架') orders = models.IntegerField(verbose_name='优先级') class Meta: # abstract为true时,表明该基表只用来继承,不会在执行迁移命令的时候生成实体表 abstract = True
③ 第三步:在app-home的models.py中建立轮播图表
from django.db import models # 导入基表,其他表继承与该表 from utils.common_models import BaseModel class Banner(BaseModel): """轮播图表""" title = models.CharField(max_length=16, verbose_name='名称') image = models.ImageField(upload_to='banner', verbose_name='图片') link = models.CharField(max_length=64, verbose_name='跳转链接') info = models.TextField(verbose_name='详情') class Meta: db_table = 'luffy_banner' verbose_name_plural = '轮播图表' def __str__(self): return self.title
④ 第四步:执行迁移命令
python manage.py makemigrations python manage.py migrate
6 后台主页轮播图接口 - 前端接口
在app-home下编写轮播图后台接口
6.1 视图类home-views.py
from django.shortcuts import render # 导入drf的视图类 from rest_framework.viewsets import GenericViewSet from rest_framework.mixins import ListModelMixin # 导入表模型 from .models import Banner # 导入序列化类 from .serializers import BannerSerializer # 导入封装好的统一返回给前端的项目的Response类,帮助我们返回定制格式给前端 from utils.common_response import MyResponse # app home下的视图类 class BannerView(GenericViewSet, ListModelMixin): # 继承了GenericViewSet,则需要声明序列化对象和序列化类 queryset = Banner.objects.filter(is_delete=False, is_show=True).order_by('orders') serializer_class = BannerSerializer def list(self, request, *args, **kwargs): ser = super().list(request, *args, **kwargs) return MyResponse(data=ser.data)
6.2 序列化类
from rest_framework import serializers # 导入表模型 from .models import Banner class BannerSerializer(serializers): class Meta: # 指定序列化的表模型与字段 model = Banner fields = ['id', 'title', 'image', 'link']
6.3 路由分发
- 在父路由中
from django.contrib import admin from django.urls import path, include from django.views.static import serve from luffy_api.apps.user import views from django.conf import settings urlpatterns = [ path('admin/', admin.site.urls), # path('test_logging/', views.test_logging), # path('test_exc/', views.TestExceptions.as_view()), # 开启media访问路由 path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}), # 由于有多个app所以减少耦合进行路由分发 path('api/v1/home',include('home.urls')) ]
- home的子路由
from rest_framework.routers import SimpleRouter from . import views router = SimpleRouter() router.register('banner', views.Banner, 'banner') urlpatterns = [ ] urlpatterns += router.urls
7 使用simpleui并录入数据
7.1 安装注册simpleui
后台管理使用django 的admin做的simpleui
① 第一步:pip安装simpleui
pip install django-simpleui
② 第二步:注册app
# Application definition INSTALLED_APPS = [ 'simpleui', 'django.contrib.admin', 'django.contrib.auth', ... ]
7.2 录入数据
① 在home的admin.py中对模型表注册
这样在django-admin的后台页面上才能显示出来
from django.contrib import admin # Register your models here. from .models import Banner admin.site.register(Banner)
② 在Home下的轮播图表中新增四张图,则会保存到media中

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY