Luffy项目:3前端调整(全局css全局配置全局axios...),后端主页轮播图表设计,接口部分代码编写

Posted Kkkkangsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luffy项目:3前端调整(全局css全局配置全局axios...),后端主页轮播图表设计,接口部分代码编写相关的知识,希望对你有一定的参考价值。

Luffy项目

一、luffy项目前端调整

1、全局css

目的:

取消标签自带的样式,方便后期制作前端页面

操作步骤:

- 第一步:在assets文件下创建css文件,在css文件中创建glabol.css
   
- 第二步:在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中引入全局css
	import \'./assets/css/global.css\'
	
- 第四步:引入后,所有的标签自带的样式都会被取消

2、全局配置文件

目的:用于存放全局标量和函数,方便组件使用

操作步骤:

- 第一步:在assets文件下创建js文件,在文件中创建settings.js
   
- 第二步:在settings.js文件中存入需要使用的全局变量和函数
	# 考虑到每次使用axios发送请求时都需要填写路由,而这个路由在后期上线时需要挨个进行修改,可以在全局配置中存放url的地址,方便后期统一修改
	export default 
        BASE_URL:\'http://127.0.0.1:8000/api/v1\'
    

- 第三步:在main.js中配置全局变量
    //引入全局settings
    import settings from \'./assets/js/settings\'
    // 配置全局setting
    Vue.prototype.$settings = settings
	
- 第四步:后期只需要在使用的地方直接使用即可
	例如:
     -标签使用: $settings.BASE_URL 
     -scrpit中使用:this. $settings.BASE_URL

3、安装axios

目的:很多组件都需要发送axios请求,直接在全局中引入,方便后期使用,节省代码

操作步骤:

- 第一步:下载axiso
	cnpm install axios -S
 
- 第二步:在main.js中引入,并添加至Vue原型中
    // 引入全局axios
    import axios from \'axios\'
    // 配置全局axios,加入Vue原型
    Vue.prototype.$axios = axios
   
- 第三步:后期在组件中不需要在单独引入,直接使用即可
	例如:this.$axios.get().then()

4、安装vue-cookies

目的:用于向浏览器中存放cookie

操作步骤:

- 第一步:安装
	cnpm install vue-cookies -S
 
- 第二步:在main.js中引入,并添加至Vue原型中
    // 引入cookie
    import cookies from \'vue-cookies\'
    // 将cookies放入Vue原型中
    Vue.prototype.$cookies = cookies
   
- 第三步:后期在组件中不需要在单独引入,直接使用即可
	例如:this.$cookies.set()

5、安装elementui

目的:用于美化标签,调整页面样式

操作步骤:

- 第一步:安装
	cnpm install element-ui -S
 
- 第二步:在main.js中引入,并添加至Vue原型中
    // 引入element-ui
    import ElementUI from \'element-ui\';
    import \'element-ui/lib/theme-chalk/index.css\';
    // 注册element-ui
    Vue.use(ElementUI)
   
- 第三步:后期直接在组件中使用elementui的样式和标签即可

6、安装bootstrap和jq

目的:用于美化标签,调整页面样式(本项目极少部分使用)

操作步骤:

- 第一步:安装
    cnpm install jquery -S
    cnpm install bootstrap@3 -S
 
- 第二步:在main.js中引入,并添加至Vue原型中
    // 引入bootstrap
    import \'bootstrap\'
    import \'bootstrap/dist/css/bootstrap.min.css\'
   
- 第三步:在vue.config中进行配置
    const defineConfig = require(\'@vue/cli-service\')
    const webpack = require("webpack");
    module.exports = defineConfig(
        transpileDependencies: true,
        configureWebpack: 
            plugins: [
                new webpack.ProvidePlugin(
                    $: "jquery",
                    jQuery: "jquery",
                    "window.jQuery": "jquery",
                    "window.$": "jquery",
                    Popper: ["popper.js", "default"]
                )
            ]
        
    )



- 第四步:后期直接在组件中使用bootstrap的样式即可

二、后端主页部分

首页接口分析:

分析完整原型图,首页需要需要编写的接口

# 分析完原型图,首页要写的接口
    - 轮播图接口
    - 推荐课程接口(暂时没写)
    - 推荐老师(没有)
    - 学员评论(没有)

1、轮播图部分表设计

创建首页app--->:home

-来到apps文件夹下执行
	python ../../manage.py  startapp home
 
- 配置文件中注册:home

创建轮播图表--->:Benner

考虑到以后创建的表中有很多共同字段,所以写一个表的基类,将共同字段提取出来,以后需要用到该字段的表直接继承基表

-第一步:在utils下新建 common_model.py
	from django.db import models
	class BaseModel(models.Model):
	created_time = models.DateTimeField(auto_now_add=True, verbose_name=\'创建时间\')
        updated_time = models.DateTimeField(auto_now=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  # 只用来继承,不用来在数据库创建

-第二步:在home 的app的models.py中写入
    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 = \'轮播图表\'
				
        def __str__(self):
             return self.title
            
- 第三步:表迁移
	python manage.py makemigrations
	python maneage.py migrate

2、轮播图部分接口代码编写

Views部分代码:

from rest_framework.viewsets import GenericViewSet
from rest_framework.mixins import ListModelMixin
from utils.common_response import APIResponse
from home.models import Banner
from home.serializers import BannerSerializer


# 获取所有轮播图
class BannerView(GenericViewSet, ListModelMixin):
    # 获取所有轮播图,过滤出已经删除的,过滤出未上架的,并且按照优先级排序
    queryset = Banner.objects.filter(is_delete=False, is_show=True).order_by(\'orders\').all()
    # 指定序列化类
    serializer_class = BannerSerializer

    # 重写list请求,用于满足result规范
    def list(self, request, *args, **kwargs):
        # 调用父类list方法,接收返回值
        res = super().list(request, *args, **kwargs)
        # 使用自己封装的response对象返回数据
        return APIResponse(data=res.data)

serializer部分代码:

from rest_framework import serializers
from home.models import Banner


class BannerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Banner
        fields = [\'id\', \'image\', \'title\', \'link\']

url部分代码:

# 总路由:
    from django.contrib import admin
    from django.urls import path, include
    from django.views.static import serve
    from django.conf import settings

    urlpatterns = [
        path(\'admin/\', admin.site.urls),
        # media路由
        path(\'media/<path:path>/\', serve, \'document_root\': settings.MEDIA_ROOT),
        # 路由分发
        path(\'api/v1/home/\', include(\'home.urls\'))
    ]
    
# home路由:
    from rest_framework.routers import SimpleRouter
    from home import views

    router = SimpleRouter()
    router.register(\'banner\', views.BannerView, \'banner\')

    urlpatterns = [
    ]
    urlpatterns += router.urls

3、轮播图部分录入数据

简介:

本项目采用主站前后端分离,后台使用simpleui

使用步骤:

- 第一步:安装
	pip install django-simpleui
    
- 注册app:
	INSTALLED_APPS = [
    \'simpleui\',
    	]
- 创建超级管理员:
	python manage.py  createsuperuser
    
- app的admin.py中注册表:
    from django.contrib import admin
    from home.models import Banner
    admin.site.register(Banner)
    
- 录入数据:http://127.0.0.1:8000/admin/

以上是关于Luffy项目:3前端调整(全局css全局配置全局axios...),后端主页轮播图表设计,接口部分代码编写的主要内容,如果未能解决你的问题,请参考以下文章

Vue项目零碎知识(全局js,css配置,element-UI,bs使用, img动态配置,js数组)

css 使用rem进行全局尺寸调整;使用em进行本地大小调整

vue_05项目配置

vue项目读取全局配置

vue项目读取全局配置

Vue3+Antd 修改antd主题色,配置全局css