django开发流程3(轮播图)

1.在models中创建一个模板

class Ads(models.Model):
    title = models.CharField(verbose_name="标题", max_length=30)
    image = models.ImageField(verbose_name="广告图", upload_to="ads")
    url = models.URLField(verbose_name="链接网址", default="http://www.baidu.com")

    def __str__(self):
        return self.title

    class Meta:
        verbose_name = "轮播图"
        verbose_name_plural = "轮播图"

2.安装一个图片处理模块 pip install  Pillow

3.生成迁移文件并迁移

python .\manage.py makemigrations

python .\manage.py migrate

4.修改媒体路径

首先在models中 upload_to="ads"

然后在settings中

当你运行添加轮播图时,照片会自动放入

5.预览图片

6.配置后台

7.配置轮播图

1.views里面添加Ads

2.在index.html中引入轮播图样式

{% extends 'base/base.html'  %}


{% block title %}
<title>首页</title>
{% endblock %}


{% block body %}
    {{ cs }}
<div class="row">
<div class="col-md-8 col-md-offset-2">
            <div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
              <!-- Indicators -->
              <ol class="carousel-indicators">
                  {% for ads in adss %}
                    {% if forloop.first %}
                  <li data-target="#carousel-example-generic" data-slide-to="{{ forloop.counter0 }}" class="active"></li>
                    {% else %}
                  <li data-target="#carousel-example-generic" data-slide-to="{{ forloop.counter0 }}"></li>
                    {% endif %}
                  {% endfor %}



              </ol>

              <!-- Wrapper for slides -->
              <div class="carousel-inner" role="listbox">
                   {% for ads in adss %}
                    {% if forloop.first %}
                        <div class="item active">
                    {% else %}
                        <div class="item">
                    {% endif %}
                            {{ ads.image }}
                        <img src="/media/{{ ads.image }}" alt="...">
                  <div class="carousel-caption">
                      {{ ads.title }}
                  </div>
                </div>
                  {% endfor %}


              </div>

              <!-- Controls -->
              <a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
                <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
                <span class="sr-only">Previous</span>
              </a>
              <a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
                <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
                <span class="sr-only">Next</span>
              </a>
            </div>
        </div>
    </div>
</div>

<div class="row">
        <div class="col-md-8 col-md-offset-2">
              <!-- Nav tabs -->
              <ul class="nav nav-tabs" role="tablist">
                  {% for c in cs %}
                    {% if forloop.first %}
                <li role="presentation" class="active"><a href="#tab{{ c.id }}" aria-controls="{{ c.id }}" role="tab" data-toggle="tab">{{ c.title }}</a></li>

                    {% else %}
                <li role="presentation"><a href="#tab{{ c.id }}" aria-controls="{{ c.id }}" role="tab" data-toggle="tab">{{ c.title }}</a></li>

                    {% endif %}
                  {% endfor %}

              </ul>

              <!-- Tab panes -->
              <div class="tab-content">
                   {% for c in cs %}
                    {% if forloop.first %}<div role="tabpanel" class="tab-pane active" id="tab{{ c.id }}">
                    {% else %}
                <div role="tabpanel" class="tab-pane" id="tab{{ c.id }}">
                    {% endif %}
                    <ul class="list-group">
                        {% for b in c.book_set.all %}
                      <li class="list-group-item">
                          <a href="/detail/{{ b.id }}">{{ b.title }}</a>
                      </li>
                        {% endfor %}
                    </ul>

                </div>
                    {% endfor %}



                </div>
              </div>
        </div>
    </div>
{% endblock %}

本课程是一个系列的django实战进阶开发教程,目标是带领大家快速上手实战,课程以最新版本django3.2为蓝本,深入django源码本身,通过内置的类视图来开发,即CBV模式开发,从最基础的类显示视图到类编辑视图再到混入视图,由浅入深,专注Django的高级知识,带你系统的玩转Django,无过多的依赖第三方库,进一步降低学习门槛,更加专注django框架本身!本课程将带你实现一个功能完备的商城系统,如:新闻管理、商品管理(包含多规格)、订单管理、购物车、快速下单、评论、地址、运费模板等常见的商城功能!除此之外,你还可以将本课程内容中涉及到的django类视图的高级用法作为参考资料,在以后的开发中用到的时候再翻阅。认真看完这个系列视频教程之后,您会深入理解django框架的高级知识以及开发流程,具备使用django上手开发实际项目的基本能力!本课程亮点一、少量的第三方依赖,降低学习门槛开发过程中依赖第三方库少,减少大家的进一步的学习理解成本,从而更加专注django框架本身!二、前端轻度结合vue.js,无需过多前端技能本项目将轻度结合vue.js以及fetch来完成一些异步请求,无需过多vue 知识,更贴合后端开发者,也更加靠近当下最热门的技术栈,为前后端分离项目开发打下坚实的基础!三、采用django本身序列化方法构造json,深入django框架本身深度使用Django本身的序列化器来序列化数据,构造一些异步操作的接口,通过这一深度使用对未来使用drf框架将打下坚实的基础,学习drf框架将变的非常容易。四、CBV模式开发,深入Django类视图本项目全部采用Django的类视图,深入学习类视图,不同的请求我们可以在类中使用不同的方法来处理,这样大大的提高了代码的可读性以及高度扩展性,更加便于二次开发!五、多规格产品功能,更符合实际需求网上千篇一律的教程都没有深入讲解多规格商品的实现思路,本专栏将手把手带你完成多规格功能,并且对JD及TB的两种多规格模式的利弊进行深入剖析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值