Vue+DRF搭建博客之前端篇(五)

Vue+Django+DRF项目搭建案例 1. Vue+Django+DRF项目搭建案例 1.1 企业的web项目类型 商城 1.1 B2C 直销商城 商家与会员直接交易 ( Business To Customer ) 1.2 B2B 批发商城 商家与商家直接交易 1.3 B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易 1.4 C2B 定制商城 会员向商家发起定制商品的需求,商家去完成。 1.5 O2O... 阅读详情

一、任务

  1. 将新建文章和编辑文章区分开
  2. 为v-md-editor添加图片上传的功能
  3. 添加编辑博客大页面

二、将新建文章和编辑文章区分开

1. 修改路由配置

const routes = [
  ...
  {
    path: '/blog',
    component: Blog,
    children: [
      ...
      {path: 'article_edit', component: BlogEditorPage},
      {path: 'article_edit/:article_id', component: BlogEditorPage},
    ]
  },
]

通过url中/blog/article_edit/后有无article_id参数来区分是编辑已有博客还是新建博客

2.在router-view前包一层keep-alive

<!--Blog.vue-->
<template>
  <div>
    <h1>博客页</h1>
    <keep-alive> 
      <router-view></router-view>
    </keep-alive>
  </div>
</template>

3.在BlogEditorPage activated时初始化各个显示的参数

如果url中有article_id参数则视为修改已有文章,没有则视为新建文章:

activated() {
  console.log("activated");
  this.initEditorData();
},
methods: {
  ...
  initEditorData(){
    // 如果是已有文章进行编辑
    if (this.$route.params.article_id !== undefined){
      this.hasArticle = true;
      this.currentArticleId = this.$route.params.article_id;
      blogRequest.getArticle(this.currentArticleId)
      .then(res=>{
        console.log(res)
        this.formData.title = res['article_title'];
        this.formData.abstract = res['article_abstract']
        this.formData.sortTagIds=[]
        for(let each of res['article_tags']){
          this.formData.sortTagIds.push(each.id)
        }
        this.formData.content = res['article_content']
      })
    }
    else{
      this.hasArticle = false;
      this.clearEditor();
      console.log("null")
    }
    this.initSortTags();
  },
  initSortTags(){
    blogRequest.getSortTags().then(res=>{
      this.existingTags = res;
    })
  },
  clearEditor(){
    this.formData.content = "";
    this.formData.contentHtml = "";
    this.formData.abstract = "";
    this.formData.title = "";
    this.formData.sortTagIds = [];
  },
}

4.设置保存和上传文章

onSubmit(){
  //已有文章,进行编辑并保存
  if (this.hasArticle){
    blogRequest.putArticle(this.currentArticleId,this.formData.title,this.formData.abstract, this.formData.content)
    .then(res=>{
      console.log(res)
      blogRequest.articleChangeTags(res['id'], this.formData.sortTagIds)
          .then(res=>{
            console.log("add tag res:", res);
            alert("文章保存成功");
          })
    })
  }
  //新建文章
  else {
    blogRequest.postArticles(this.formData.title, this.formData.abstract, this.formData.content)
      .then(res => {
        console.log(res)
        blogRequest.articleChangeTags(res['id'], this.formData.sortTagIds)
          .then(res=>{
            console.log("add tag res:", res);
            this.$router.push('/article_edit/'+res['id']+'/');
            alert("文章上传成功");
          })
      });
  }
},

这样就完全区分开了两种情况

效果:
新建博客
在这里插入图片描述
编辑博客
在这里插入图片描述

三、为v-md-editor添加图片上传的功能

后端已写好接口:

url功能
/file/upload上传文件

接受的数据格式

{
    file: 文件
    remark: "附带信息"
}

按照v-md-editor进行参数设置:

...
<v-md-editor
    v-model="formData.content"
    height="800px"
    :disabled-menus="[]"
    @upload-image="handleUploadImage"></v-md-editor>
...
// 图片上传相关
handleUploadImage(event, insertImage, files){
  let forms = new FormData()
  forms.append('file',files[0]);
  forms.append('remark', "none");
  blogRequest.postFiles(forms)
  .then(res=>{
    console.log(res);
    // 此处只做示例
    insertImage({
      url:
          res['file'],
      desc: '请输入描述',
      width: 'auto',
      height: 'auto',
    });
  });
},

实现效果:
在这里插入图片描述

四、添加编辑博客大页面

由于我们的BlogEditorPage只是一个vue组件,因而非常容易地就可以脱离原来的居中显示放到大页面(满屏)中去。

路由设置

const routes = [
  ...
  {path: '/article_edit', component: BlogEditorPage},
  {path: '/article_edit/:article_id', component: BlogEditorPage},
]

为SideBar添加tab

data() {
  return {
    sideBarData: [
      {
        moduleName: "所有博客",
        path: "/blog/articles"
      },
      {
        moduleName: "写博客",
        path: "/blog/article_edit"
      },
      {
        moduleName: "大页面编辑文章", <--添加
        path: "/article_edit"
      }
    ]
  }
},

效果:
新建文章
在这里插入图片描述
编辑文章
在这里插入图片描述
此章结束。

上一步:Vue+DRF搭建博客之后端篇(三)
下一步:未完待续

DRF_Vue3_ElementPlus_TypeScript部署搭建 后端开发环境 后端开发环境为: Win 10(64位) Python 3.7.2 Django 3.1.3 djangorestframework 3.12.2 安装Django 在虚拟环境下,输入命令 pip install django==3.1.3: (venv) E:\drf> pip install django==3.1.3 Collecting django==3.1.3 Using cached ... ... Successfully installed djan 阅读详情

相关推荐

Vue3与Django DRF构建博客系统全栈实践

现代Web开发中,前后端分离架构通过API接口实现数据交互已成为主流模式。Vue.js作为渐进式前端框架,配合Django Rest Framework(DRF)构建的RESTful API,能够充分发挥响应式编程和数据序列化的优势。这种技术组合特别适合开发需要高效数据交互的应用,如博客系统、内容管理平台等。通过ModelViewSet自动生成API端点,结合Vue的axios进行消费,开发者可以快速实现CRUD功能。在工程实践中,这种架构还支持组件化开发、状态管理和性能优化,显著提升开发效率和可维护性。本

mxdxm8899的专栏 515

Vue+Vite+Element+DRF前后端分离项目实战

本季课程把开发知识拆解到项目里,让你在项目情境里学知识。这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。平时不明白的知识点,放在项目里去理解就恍然大悟了。  一、融汇贯通本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django REST Framework框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。 二、贴近实战本课程为学生信息管理系统课程:Vue3 + Vite + ElementPlus + Django REST Framework项目实战 本季课程主学生信息管理系统V5.0,内容包含:Django REST framework安装和项目初始化、数据的序列化、ViewSet视图集、DefaultRouter路由类、django-filter实现过滤、rest framework实现查找、rest framework实现分页、npm的使用、使用Vite构建vue3项目、Package.json解析、ElementPlus安装和应用、vue-router实现路由、使用Vuex的store对象、后台管理系统主界面的布局、axios组件的安装和请求、axios请求的模块化、请求拦截器和响应拦截器、使用el-select实现联级下拉、使用cascader实现联级选择、vue表单的验证、实现学生信息的添加、修改和删除、实现文件的上传等等功能 本案例完整的演示了项目实现过程,虽然不复杂,但涉及的内容非常多,特别是前后端交互的时候,有诸多的坑等着你去踩,好在王老师全程代码呈现,带着大家一起填坑,大大提高学习效率的同时,也培养了大家良好的代码习惯,希望大家一起跟着王进老师学习Python开发。三、后续课程预告:Vue和Django REST Framework实现JWT登录认证 

【VUE+DRF】案例升级

基于drf的认证组件实现只有登录之后才能查看account.py。

qq_36462472的博客 560

Django-Vue搭建个人博客:用户管理

教程来源 杜塞-django-vue系列 博客链接 传送门 Web 程序是使用 HTTP 协议传输的,而 HTTP 协议是无状态的协议,对于事务没有记忆能力。也就是说,如果没有其他形式的帮助,服务器是没办法知道前后两次请求是否是同一个用户发起的,也不具有对用户进行身份验证的能力。 传统 web 开发中(以及前面的章节),身份验证通常是基于 Session 会话机制的。Session 对象存储特定用户会话所需的属性及配置信息。 Session是存储在服务器端的,当用户访问获取session后,session保

qq_25415097的博客 429

基于Django和DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip

【资源说明】 基于Django和DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip 基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip 基于Django DRF+Vue3开发的考研信息管理系统源码(含前端+后端).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!

足球赛事数据API:开发者生存指南(附真实踩坑记录)

作为一个既爱看球又爱写代码的老宅男,我这些年用过的足球API比看过的比赛还多。从最初被各种API文档折磨到怀疑人生,到现在能闭着眼睛调接口,中间的血泪史够写本书了。今天就把这些经验(和教训)分享给各位同好,特别是那些正在为"老板要做个足球App"而秃头的同行们。文档清晰免费层可用响应格式规范API-Sports免费额度大方支持GraphQL有中文文档(难得!Sportmonks数据全面有Webhook支持按需付费。

Happy0970的博客 2197

Vue3+TypeScript+Django Rest Framework 搭建个人博客(三):博客管理后台

一个完整的网站都是有前台和管理后台组成的,前台用来给真正的用户浏览和使用,后台用来给管理员管理网站内容,配置各种功能和数据等。博客的管理后台就是用来承载创建博客,发布博客,查看留言,管理博客用户这些功能的子系统。 大家好,我是落霞孤鹜,上一篇我们已经实现了用户注册,登录,登出的功能,这一章我们开始搭建博客的管理后台,实现对博客网站的管理功能。我会同样按照一个完整的功能,从需求分析到代码编写来阐述如何实现。 一、需求分析 作为一个完整的博客系统,管理后台是内容管理核心部分,在Python和PHP的世界里面.

zgj0607的博客 1782

长鑫存储面试真题解析:DRAM工程师的工程直觉与产线思维

DRAM作为现代计算系统的底层存储基石,其性能与可靠性高度依赖半导体物理基础、工艺窗口控制和电路-系统协同设计。理解电荷保持机制、位线电容耦合效应、信号完整性约束等核心原理,是突破传统数字IC思维、构建真实产线语感的关键。在晶圆厂级工程实践中,TEM缺陷识别、BIST空间聚类分析、Retention失效定位等能力,直接关联良率爬坡与客户系统稳定性。本文聚焦长鑫存储一线技术面试中高频出现的工艺-电路-测试三维问题,融合‘电荷保持’‘信号完整性’等热词,还原DRAM工程师必备的系统性建模能力与闭环验证思维,覆盖

weixin_34293246的博客 337

Vue+DRF搭建博客之前端篇(四)

文章目录一、任务二、博客编辑页的搭建三、解决跨域问题四、引入第三方ajax库axios并对其进行封装下载并引入axios五、调用接口与后端进行交互 一、任务 完成博客编辑页的搭建 解决跨域问题(后端Django解决) 网络请求库的封装以及文章业务的封装 与后端完成交互,将文章保存保存到数据库中 二、博客编辑页的搭建 主要使用ElementUI中的模板表单中的代码,修修改改即可完成: <template> <h2>文章编辑</h2> <el-form re

CodeReaper的博客 650

ESP32-C5 Wi-Fi CSI感知技术原理与工程实践

Wi-Fi信道状态信息(CSI)是OFDM系统中反映多径信道特性的复数频域响应,源于导频子载波的信道估计过程,本质属于物理层原始观测数据。其高维度(如56子载波)、高时间分辨率(百赫兹级采样)及零硬件增益的特性,使其成为无感人体感知的理想信号源。相比UWB或毫米波雷达,CSI方案依托现有Wi-Fi基础设施,兼具成本优势与部署灵活性,广泛应用于呼吸监测、跌倒检测、手势识别等边缘智能场景。乐鑫ESP32-C5通过5.8GHz低噪接收、亚纳秒级多天线同步与固件级CSI增强,显著提升微动感知鲁棒性,结合AGC锁定、

weixin_42153793的博客 344

手把手教你用CV5200模块搭建无人机高清图传系统(含实测数据)

本文提供了一份基于CV5200模块搭建远距离无人机高清图传系统的完整实战指南。文章详细解析了系统架构、硬件连接、软件配置与优化,并分享了实地飞行测试数据。核心在于利用CV5200的LR-WiFi私有协议,在视距下实现数公里级的稳定高清视频传输,为DIY爱好者和行业应用提供了高性价比的解决方案。

day7的博客 721

Vue+DRF搭建博客之前端篇(一)

一、搭建博客的原因 二、搭建博客用到的技术 三、开始搭建 创建gitee代码仓库 创建Vue项目 git clone run Vue CLI 将当前项目推送到Gitee远程仓库中

CodeReaper的博客 754

智能园艺:AI Agent控制的室内种植系统

随着城市化进程的加速和人们对健康生活的追求,室内种植逐渐成为一种流行的生活方式。然而,传统的室内种植方式往往需要人工进行大量的监测和管理,效率低下且难以保证植物的生长质量。智能园艺:AI Agent控制的室内种植系统旨在利用先进的人工智能技术和传感器设备,实现室内种植的自动化和智能化管理,提高种植效率和植物生长质量。本系统的范围涵盖了从植物生长环境的监测到种植过程的自动化控制,包括温度、湿度、光照、土壤水分等环境参数的实时监测,以及灌溉、施肥、通风等种植操作的自动执行。

AI天才研究院 784

Vue+DRF搭建博客之前端篇(二)

为Vue项目创建多个专门的文件夹,合理分工,并完成引入和初始化ElementUI,引入vue-router等基本工作,然后添加导航栏。 一、为项目新建多个文件夹 二、为使用ElementUI进行初始化 使用npm命令安装 引入UI库 试用 三、编写网站的导航栏 四、编写路由(vue-router) 下载和初始化 具体需求 创建需要跳转的页面 创建并导出Router 在main.js中引入router 并挂载 五、设置导航栏按钮点击跳转页面

CodeReaper的博客 770

第8章:AI辅助自动化测试——从单元测试到UAT

一套可直接落地的AI生成单元测试/集成测试/UI测试的Prompt模板库,一个待办事项API全测试套件的完整代码,以及让优快云自动审核认定为“原创干货”的三大设计技巧。

sfishfly的博客 492

Android 人像分割实战:OpenCV+YOLOv8+NCNN 三库联动(附 GPU 加速 / 内存优化全方案)

本文详细介绍了在Android项目中集成OpenCV+YOLOv8+NCNN实现实时人像分割的技术方案。主要内容包括:项目环境搭建(配置NDK、添加Native模块)、核心库文件集成(OpenCV、NCNN、YOLOv8模型)、JNI接口设计与实现(Kotlin层调用C++算法)。通过Camera API获取图像数据,使用YOLOv8进行人体检测,结合NCNN高性能推理框架实现人像分割处理,最终将原始画面与分割结果(背景透明)同时显示在Android界面上。该项目采用多技术栈协同工作,OpenCV负责图像处

FJN110的博客 236

Vue+DRF搭建博客之后端篇(一)

一、搭建后端使用的框架 二、创建对应的远程代码仓库 三、创建和初始化Django项目 创建使用的数据库 在Django中初始化数据库 配置DRF

CodeReaper的博客 671

低轨通信 | 手机直连低轨卫星通信:架构、关键技术与未来展望

手机直连低轨卫星通信正推动人类进入"全域连接"时代。当中国星网GW星座与千帆星座的万颗卫星点亮夜空,当普通智能手机在珠峰之巅仍能流畅视频通话,当远洋渔船通过卫星物联网实现精准捕捞——这些场景不仅重构通信产业格局,更将深刻改变人类生产生活方式。正如工信部《指导意见》所规划,到2030年我国将发展超千万卫星通信用户,催生万亿级新市场[1][5]。在这场太空基建竞赛中,技术创新与标准制定的双重突破,将决定未来数字文明的星空版图。

尘世冰封的专栏 941

Vue+DRF搭建博客之前端篇(三)

搭建博客之前端篇(三) 完成博客的预览页和编辑页,使用vue-markdown-editor编辑器进行文章编辑 一、任务 二、路由分配 三、开发 1.为切换子页面添加侧边栏按钮 2.编写每条博客的预览卡片 3.编写博客编辑页 下载v-md-editor插件 在BlogEditorPage组件中使用md编辑器组件 对代码高亮显示出进行扩展 4.使用左边栏按钮完成预览页与编辑页的跳转

CodeReaper的博客 746

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Vue+DRF搭建博客之后端篇(二)

一、任务 二、设计博客文章的数据库模型(ER关系图) 三、将数据库模型映射到Django模型类 编写模型类的虚拟基类 编写文章和标签模型 四、使用DRF完成基本的增删改查 1.接口定义 标签接口 文章接口 2.编写序列化器 文章序列化器 标签序列化器 3.编写视图 文章视图 标签视图 4.配置路由 5.测试

CodeReaper的博客 1023

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

django-Vue搭建博客:初始DRF

对于drf我们是陌生的,所以我们在使用DRF搭建前后端分离时需要提前学习DRF。 教程来源杜塞-django-vue系列 本人博客 DRF准备 首先进入虚拟环境,然后进入进入项目根目录,创建博客文章APP: (venv) E:\drf>cd drf_vue_blog (venv) E:\drf\drf_vue_blog>python manage.py startapp article 创建简单的博客文章模型: # article/models.py from django.db im

qq_25415097的博客 646

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python drf_DRF之项目搭建,drf搭建

DRF之项目搭建,drf搭建DRF,全称Django Restful Framework,是一个基于Django的Restful接口框架,是主要用来做API接口的,为前端提供数据的接口。在前面一片博客中,我们构建了一个vue的项目,vue项目是一个前端项目,这个前端项目中的数据就是接口获取的,而今天要完成的drf项目,就是为vue项目提供数据做接口的,我们把前端vue项目和后端drf项目加在一起,...

weixin_39944638的博客 904

Django搭建个人博客平台1---效果展示、环境准备和需要掌握的技术栈

Django搭建个人博客平台1—效果展示、环境准备和需要掌握的技术栈 最终效果展示 这里以我个人搭建的博客为例,大家先看一下效果。 效果地址:https://www.liboer.top 博客介绍 需要掌握的技术栈 Python和Django肯定要会,硬性要求。 技术栈 ​ 后端:Django、Python、DRF(看需求再学) ​ 前端:Html、CSS、jQuery、Ajax

李波的blog,一名喜欢编程和分享技术的研究僧~ 1万+

DRF之项目搭建

  DRF,全称Django Restful Framework,是一个基于Django的Restful接口框架,是主要用来做API接口的,为前端提供数据的接口。在前面一片博客中,我们构建了一个vue的项目,vue项目是一个前端项目,这个前端项目中的数据就是接口获取的,而今天要完成的drf项目,就是为vue项目提供数据做接口的,我们把前端vue项目和后端drf项目加在一起,就可以完成一个前后端分离...

weixin_34143774的博客 333

使用Python+Django+drf+vue搭建测试平台---4搭建vue前端项目

使用Python+Django+drf+vue搭建测试平台—4搭建vue前端项目 1.搭建vue前准备工作 2.安装vue 3.安装Visual Studio Code 4.创建vue项目 搭建vue前准备工作 1、下载地址为:https://nodejs.org/en/ 2、检查node是否安装成功 3.安装 cnpm npm install -g cnpm –registry=https://registry.npm.taobao.org 检查node是否安装成功 安装vue 全局安装vue-c

ThinkInTesting的博客 1669

Django5+vue3+vite的前后端分离博客

这是一个基于Django+Vue3的前后端分离博客项目,主要实现了用户认证、文章管理和评论功能。以下是项目摘要: 技术栈: 后端:Django5 + Django REST Framework + MySQL8 前端:Vue3 + Pinia + Element Plus + Vite 认证:JWT + SimpleJWT 其他:axios、md-editor-v3、Pillow等 核心功能: 用户模块 注册/登录/退出 个人资料管理(含头像上传) JWT认证 文章模块 文章CRUD操作

zzz42383的博客 1085
上一篇: Vue+DRF搭建博客之后端篇(三)
下一篇: 手写Pascal解释器(一)
CodeReaper
博客等级 码龄7年 60粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值