• luffy项目首页搭建、django项目依赖


    首页搭建

    Header组件

    <template>
      <div class="header">
        <div class="slogan">
          <p>老男孩IT教育 | 帮助有志向的年轻人通过努力学习获得体面的工作和生活p>
        div>
        <div class="nav">
          <ul class="left-part">
            <li class="logo">
              <router-link to="/">
                <img src="../assets/img/head-logo.svg" alt="">
              router-link>
            li>
            <li class="ele">
              <span @click="goPage('/free-course')" :class="{active: url_path === '/free-course'}">免费课span>
            li>
            <li class="ele">
              <span @click="goPage('/actual-course')" :class="{active: url_path === '/actual-course'}">实战课span>
            li>
            <li class="ele">
              <span @click="goPage('/light-course')" :class="{active: url_path === '/light-course'}">轻课span>
            li>
          ul>
    
          <div class="right-part">
            <div>
              <span>登录span>
              <span class="line">|span>
              <span>注册span>
            div>
          div>
        div>
      div>
    
    template>
    <script>
    export default {
      name: "Header",
      data() {
        return {
          url_path: sessionStorage.url_path || '/',
        }
      },
      methods: {
        goPage(url_path) {
          // 已经是当前路由就没有必要重新跳转
          if (this.url_path !== url_path) {
            this.$router.push(url_path);
          }
          sessionStorage.url_path = url_path;
        },
      },
      created() {
        sessionStorage.url_path = this.$route.path;
        this.url_path = this.$route.path;
      }
    }
    script>
    
    
    <style scoped>
    .header {
      background-color: white;
      box-shadow: 0 0 5px 0 #aaa;
    }
    
    .header:after {
      content: "";
      display: block;
      clear: both;
    }
    
    .slogan {
      background-color: #eee;
      height: 40px;
    }
    
    .slogan p {
      width: 1200px;
      margin: 0 auto;
      color: #aaa;
      font-size: 13px;
      line-height: 40px;
    }
    
    .nav {
      background-color: white;
      user-select: none;
      width: 1200px;
      margin: 0 auto;
    
    }
    
    .nav ul {
      padding: 15px 0;
      float: left;
    }
    
    .nav ul:after {
      clear: both;
      content: '';
      display: block;
    }
    
    .nav ul li {
      float: left;
    }
    
    .logo {
      margin-right: 20px;
    }
    
    .ele {
      margin: 0 20px;
    }
    
    .ele span {
      display: block;
      font: 15px/36px '微软雅黑';
      border-bottom: 2px solid transparent;
      cursor: pointer;
    }
    
    .ele span:hover {
      border-bottom-color: orange;
    }
    
    .ele span.active {
      color: orange;
      border-bottom-color: orange;
    }
    
    .right-part {
      float: right;
    }
    
    .right-part .line {
      margin: 0 10px;
    }
    
    .right-part span {
      line-height: 68px;
      cursor: pointer;
    }
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144

    Banner组件

    <template>
      <div class="banner">
        <el-carousel height="400px">
          <el-carousel-item v-for="item in 4" :key="item">
            <img src="../assets/img/banner1.png" alt="">
          el-carousel-item>
        el-carousel>
      div>
    template>
    
    <script>
    export default {
      name: "Banner"
    }
    script>
    
    <style scoped>
    .el-carousel__item {
      height: 400px;
      min-width: 1200px;
    }
    
    .el-carousel__item img {
      height: 400px;
      margin-left: calc(50% - 1920px / 2);
    }
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    Card组件

    <template>
      <div>
          <el-row>
            <el-col :span="6" v-for="(o, index) in 4" :key="o" class="course_detail">
              <el-card :body-style="{ padding: '0px' }">
                <img src="http://photo.liuqingzheng.top/2023%2002%2022%2021%2057%2011%20/image-20230222215707795.png"
                     class="image">
                <div style="padding: 14px;">
                  <span>热门课程span>
                  <div class="bottom clearfix">
                    <time class="time">价格:199time>
                    <el-button type="text" class="button">查看详情el-button>
                  div>
                div>
              el-card>
            el-col>
          el-row>
        div>
    
    
    template>
    
    <style scoped>
    .time {
      font-size: 13px;
      color: #999;
    }
    
    .bottom {
      margin-top: 13px;
      line-height: 12px;
    }
    
    .button {
      padding: 0;
      float: right;
    }
    
    .image {
      width: 100%;
      display: block;
    }
    
    .clearfix:before,
    .clearfix:after {
      display: table;
      content: "";
    }
    
    .clearfix:after {
      clear: both
    }
    
    .course_detail {
      padding: 50px;
    }
    
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58

    Footer

    <template>
      <div class="footer">
        <ul>
          <li>关于我们li>
          <li>联系我们li>
          <li>商务合作li>
          <li>帮助中心li>
          <li>意见反馈li>
          <li>新手指南li>
        ul>
        <p>Copyright © luffycity.com版权所有 | 京ICP备17072161号-1p>
      div>
    template>
    
    <script>
    export default {
      name: "Footer"
    }
    script>
    
    <style scoped>
    .footer {
      width: 100%;
      height: 128px;
      background: #25292e;
      color: #fff;
    }
    
    .footer ul {
      margin: 0 auto 16px;
      padding-top: 38px;
      width: 810px;
    }
    
    .footer ul li {
      float: left;
      width: 112px;
      margin: 0 10px;
      text-align: center;
      font-size: 14px;
    }
    
    .footer ul::after {
      content: "";
      display: block;
      clear: both;
    }
    
    .footer p {
      text-align: center;
      font-size: 12px;
    }
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    HomeView

    <template>
      <div class="home">
        <Header>Header>
          <Banner>Banner>
          <Card>Card>
          <img src="http://photo.liuqingzheng.top/2023%2003%2001%2016%2010%2034%20/1.png" alt="" width="100%" height="500px">
          <Footer>Footer>
      div>
    template>
    
    <script>
    import Card from "@/components/Card.vue";
    import Banner from "@/components/Banner.vue";
    import Footer from "@/components/Footer.vue";
    import Header from "@/components/Header.vue";
    export default {
      name: 'HomeView',
      components: {
          Banner,
          Footer,
          Header,
          Card
      }
    }
    script>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    轮播图接口打通

    Banner组件

    <template>
      <div class="banner">
        <el-carousel height="400px">
          <el-carousel-item v-for="item in banner_list" :key="item.id">
            <div v-if="item.link.indexOf('http')==0">
              <a :href="item.link"><img :src="item.image" alt="">a>
            div>
            <div v-else>
              <router-link :to="item.link"><img :src="item.image" alt="">router-link>
            div>
    
    
          el-carousel-item>
        el-carousel>
    
      div>
    template>
    
    <script>
    export default {
      name: "Banner",
      data() {
        return {
          banner_list: []
        }
      },
      created() {
        this.$axios.get(this.$setting.BASS_URL + 'home/banner/').then(res => {
          console.log(res.data)
          if (res.data.code == 100) {
            this.banner_list = res.data.result
          } else {
            this.$message({
              showClose: true,
              message: res.data.msg,
              type: 'error'
            });
          }
        })
      }
    }
    
    script>
    
    <style scoped>
    .el-carousel__item {
      height: 400px;
      min-width: 1200px;
    }
    
    .el-carousel__item img {
      height: 400px;
      margin-left: calc(50% - 1920px / 2);
    }
    style>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    导出依赖文件

    Django导出依赖文件
    虚拟环境中,进到项目根路径,执行
    pip freeze > requirement.txt

  • 相关阅读:
    一种便携式GNSS仿真策略
    【web前端期末大作业】基于html+css+javascript+jquery技术设计的音乐网站(44页)
    软考视频,系统架构师视频、系统分析师视频、软件设计师视频,试卷,真题
    JVM 彻底搞懂JVM内存区域及直接内存
    STC15单片机-生产资料,项目结束
    FRP原理 实战
    每天加班的HR,时间都浪费在了这些琐事上?
    【Docker Compose】Docker ComposeV2新版本的日常使用
    Oracle 12C的闪回技术详解
    联邦学习综述四
  • 原文地址:https://blog.csdn.net/qq_44779250/article/details/133867361