首页 > 其他分享 >路飞-

路飞-

时间:2023-02-28 19:11:17浏览次数:36  
标签:name models 步骤 py js 路飞 import

1.路飞前台全局css,全局配置文件

1.1 整理项目

将App.vue中的内容删除:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

<style>

</style>

router/index.js:

import Vue from 'vue'
import VueRouter from 'vue-router'
import HomeView from '../views/HomeView.vue'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

目前前端home页面什么都没有,只剩一个标题:
image

1.2 全局css

正常写前端项目,需要去掉所有标签的默认样式,css。我们首先定义一个全局样式:
步骤一:
src>>>asserts>>>css>>>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只需要导入就会生效,在main.js中配置:
main.js

import '@/assets/css/global.css'

1.3 全局js

向后端发送请求,请求地址测试阶段 127.0.0.1:8000。后期上线,地址要变,如果在组件中将地址写死,后期每个都需要改很麻烦。我们的解决方案是写一个全局js,js中有个url地址,后所有组件中发送请求时,都是用这个url地址。
步骤一:在assest>>>js中新建settings.js:
settings.js:

    export default {
        BASE_URL:'http://127.0.0.1:8000/api/v1'
    }

步骤二:在main.js中引入:
main.js:

import settings from "@/assets/js/settings";
Vue.prototype.$settings = settings
// 此后在任意组件中只要 this.$settings.BASE_URL中即可拿到跟路由,再根据根录音继续拼接:this.$axios.get(this.$settings.BASE_URL+'/users').then(res=>{
    })

2.安装axios

步骤一:安装:在Local命令行执行:

cnpm install axios -S

步骤二:
在main.js中配置:
main.js:

import axios from 'axios'
Vue.prototype.$axios=axios

步骤三:
在任意组件中可以使用:

this.$axios.get()

3.安装vue-cookies

后期登陆成功,token存储在cookie中
安装vue-cookies步骤:
步骤一:在Local命令行安装:

cnpm install vue-cookies -S

步骤二:把vue-cookie放到vue原型中
main.js

import cookies from "vue-cookies";
Vue.prototype.$cookies=cookies

步骤三:在任意组件中使用:

this.$cookies.set()

4.安装elementui

步骤一:在Local命令行安装:
(安装完成之后要在package.json中检查是否已经成功安装)

cnpm install element-ui -S

步骤二:在main.js中配置:

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

步骤三:在组件中找到合适的样式复制粘贴

5.轮播图表创建

我们一进入主页就能看到一个轮播图,轮播图图片可以是写死的,也可以是动态获取的。对于轮播图有如下几个可能的字段:
创建时间、更新时间、更新人、是否删除、是否展示(对于没有删除的图片,也可以选择不展示)、图片标题、说明、跳转链接(可有可无)等。
其中几个字段比如:创建时间、更新时间、更新人、是否删除、是否展示,可能不止在轮播图这一张表中使用,所以我们采用建立一张基表(一个类)的形式,让其他需要用到这些字段的表继承该表(类)。
参考AbstratUser,User表继承了该类,但是该表在数据迁移后并没有显示,这是由于该类中:abstract = True来控制。我们也通过该命令控制基表不显示在表当中。

步骤一:在utils>>>common_model.py中建立该基表:
utils/common_model.py:

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=True, verbose_name='最后更新时间')
    update_person = models.CharField(max_length=32, verbose_name='更新人')
    is_show = models.BooleanField(default=True, verbose_name='是否展示')
    is_delete = models.BooleanField(default=False, verbose_name='是否删除')
    orders = models.IntegerField(verbose_name='优先级')

    class Meta:
        abstract = True  # 控制该表不出现在luffy库当中

步骤二:在home>>>models.py中继承该表,并且扩展字段:
在home/models.py:

from django.db import models
from utils.common_model import BaseModel

class Banner(BaseModel):
    title = models.CharField(max_length=16, unique=True, 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 = '轮播图表'  # 在admin后台管理中显示的名字

    def __str__(self):
        return self.title  # 打印对象时自动触发

步骤三:执行数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

6.后台主页轮播图模块接口

apps>>>views>>>home>>>views.py:

from rest_framework.viewsets import GenericViewSet
from .models import Banner
from .serializer import BannerSerializer
from rest_framework.mixins import ListModelMixin

class BannerView(GenericViewSet, ListModelMixin):
'''GenericViewSet继承了ModelViewSet和GenericAPIView,GenericAPIView中含有queryset和serializer_class,ModelViewSet负责自动生成路由'''
    queryset = Banner.objects.filter(is_delete=False, is_show=True).order_by('orders')
    serializer_class = BannerSerializer

序列化类继承ModelSerializer:
apps>>>home>>>serializer.py:

from rest_framework import serializers
from .models import Banner

class BannerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Banner
        fields = ['id', 'image', 'title', 'link', 'info']  # 返回给前端的字段

urls.py:

from rest_framework.routers import SimpleRouter
from home import views as home_view  # 由于有两个app,每个app里面都有views,所以给每个app中的views起不同的别名。

router = SimpleRouter()
router.register('banner',home_view.BannerView,'banner')  # 127.0.0.1:8000/api/v1/banner

urlpatterns = [
    path('admin/', admin.site.urls),
    path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),  # 负责开设media访问限制
    path('api/v1/',include(router.urls))
]

目录结构如下:
image

7.用simpleui创建轮播图数据

步骤一:在django.admin中注册Banner表
apps>>>home>>>admin.py:

from django.contrib import admin
from .models import Banner

admin.site.register(Banner)

步骤二:下载simpleui
在Local命令行输入:

pip install django-simpleui

步骤三:在dev.py中注册simpleui(一般注册在最上面):

INSTALLED_APPS = [
    'simpleui',
	...
    'rest_framework',
    'home',
    'user'
]

步骤四:创建超级管理员
在Local命令行输入:

python manage.py createsuperuser

此时我们通过root和123的超级管理员可以登录到admin后台管理:
image
步骤五:在admin后台管理中对轮播图表插入数据:
image
这时我们通过自动生成的路由:127.0.0.1:8000/api/v1/banner,发送get请求就可以拿的到所有的banner数据:
image

标签:name,models,步骤,py,js,路飞,import
From: https://www.cnblogs.com/ERROR404Notfound/p/17164447.html

相关文章