Django4+Vue3全新技术实战全栈项目 苦哉生长当驿边

download:Django4+Vue3全新技术实战全栈项目

Django 4+Vue 3的基本概念
Django 4
Django 4是一种基于Python语言的高级Web框架,它遵循MVC(模型-视图-控制器)模式,提供了一套完整的工具和组件,用于快速开发高效、安全、可扩展的Web应用1。Django 4相比于之前的版本,有以下几个主要的改进3:

支持ASGI(异步服务网关接口),可以让Django应用更好地利用异步编程和WebSockets等技术。
支持自动检测并修复系统时区设置错误,可以避免时区相关的问题。
支持JSONField字段在所有支持的数据库中使用,可以更方便地存储和查询JSON数据。
支持在模板中使用点号作为千位分隔符,可以更美观地显示数字。
支持在管理界面中自定义主题颜色,可以更个性化地定制外观。
Vue 3
Vue 3是一种基于JavaScript语言的渐进式前端框架,它通过响应式数据绑定和组件化系统,让开发者可以轻松地构建交互式和复杂的用户界面2。Vue 3相比于之前的版本,有以下几个主要的改进4:

使用Proxy对象重写了响应式系统,可以提高性能和兼容性,同时支持更多的数据类型和操作。
引入了Composition API,可以让开发者更灵活地组织和复用逻辑代码,同时支持TypeScript类型推断。
引入了Teleport组件,可以让开发者更方便地将子组件渲染到任意位置,例如模态框或弹出层等。
引入了Fragments特性,可以让开发者在模板中返回多个根节点,而不需要额外的包裹元素。
引入了多个内置指令和组件,如v-model, v-show, v-if, v-for, Transition, KeepAlive等,可以简化常见的功能实现。
Django 4+Vue 3的优势
使用Django 4+Vue 3开发Web应用有以下几个优势:

可以利用Python和JavaScript两种流行且强大的编程语言,编写高质量、高效率、高可读性的代码。
可以利用Django 4和Vue 3的新特性,如ASGI, JSONField, Composition API, Teleport等,提高应用的性能和用户体验。
可以享受Django和Vue生态系统中丰富的资源和工具,如DRF, GraphQL, Vuex, Axios, Element UI等,快速搭建和部署应用。
Django 4+Vue 3博客平台示例
为了展示如何使用Django 4+Vue 3构建一个博客平台,我们将以「Django 4 + Vue.js 前后端分离Web开发实战」为参考,简单实现一个前端页面,显示博客列表和博客详情。

首先,我们需要创建一个Django 4+Vue 3项目,可以使用以下命令:

创建一个虚拟环境

python -m venv venv

激活虚拟环境

source venv/bin/activate

安装Django 4

pip install django

创建一个Django项目

django-admin startproject blog_project

进入项目目录

cd blog_project

创建一个Django应用

python manage.py startapp blog_app

安装Vue CLI

npm install -g @vue/cli

创建一个Vue应用

vue create blog_app_frontend
复制
接下来,我们需要配置Django项目,主要包括以下几个步骤:

在settings.py文件中,添加blog_app到INSTALLED_APPS列表中,以注册应用。
在settings.py文件中,添加CORS_ALLOW_ALL_ORIGINS = True到末尾,以允许跨域请求。
在urls.py文件中,添加path(‘api/’, include(‘blog_app.urls’))到urlpatterns列表中,以配置API路由。
在blog_app目录下,创建一个models.py文件,添加以下代码,以定义博客模型:
from django.db import models

定义一个博客模型类,继承自models.Model类

class Blog(models.Model):

# 定义一个标题字段,类型为字符型,最大长度为100
title = models.CharField(max_length=100)
# 定义一个内容字段,类型为文本型
content = models.TextField()
# 定义一个创建时间字段,类型为日期时间型,自动设置为当前时间
created_at = models.DateTimeField(auto_now_add=True)

# 定义一个字符串表示方法,返回标题
def __str__(self):
    return self.title

复制
在blog_app目录下,创建一个serializers.py文件,添加以下代码,以定义博客序列化器:
from rest_framework import serializers
from .models import Blog

定义一个博客序列化器类,继承自serializers.ModelSerializer类

class BlogSerializer(serializers.ModelSerializer):

# 定义一个元数据类,指定模型和字段
class Meta:
    model = Blog
    fields = ['id', 'title', 'content', 'created_at']

复制
在blog_app目录下,创建一个views.py文件,添加以下代码,以定义博客视图:
from rest_framework import generics
from .models import Blog
from .serializers import BlogSerializer

定义一个博客列表视图类,继承自generics.ListAPIView类

class BlogListView(generics.ListAPIView):

# 指定查询集为所有的博客对象
queryset = Blog.objects.all()
# 指定序列化器为博客序列化器类
serializer_class = BlogSerializer

定义一个博客详情视图类,继承自generics.RetrieveAPIView类

class BlogDetailView(generics.RetrieveAPIView):

# 指定查询集为所有的博客对象
queryset = Blog.objects.all()
# 指定序列化器为博客序列化器类
serializer_class = BlogSerializer

复制
在blog_app目录下,创建一个urls.py文件,添加以下代码,以配置博客路由:
from django.urls import path
from .views import BlogListView, BlogDetailView

定义一个路由列表

urlpatterns = [

# 配置博客列表路由,对应BlogListView视图类
path('blogs/', BlogListView.as_view()),
# 配置博客详情路由,对应BlogDetailView视图类,并传入参数名为pk的路径变量
path('blogs//', BlogDetailView.as_view()),

]

你可能感兴趣的:(django)