Django+mysql 实现简单的小说书库页面

很久以前就想着试着用爬虫是模拟一下db小说网站...结果对网页这块又没什么头绪...接触了Django似乎可以去尝试一下了...

先找个小说网页模板,自行删改,保留一组显示小说信息的部分,对书名作者等进行参数设置...

<div class="store_collist">
    
    {% for info in book_list %}
        <div class="bookbox fl">
            <div class="bookimg">
                <a href={{info.index1}} target="_blank">
                    <img src={{info.img1}} alt="{{info.bookname1}}">
                </a>
            </div>
            <div class="bookinfo">
                <div class="bookname">
                    <a href={{info.index1}} target="_blank">{{info.bookname1}}</a>
                </div>
                <div class="bookilnk">
                    <a href="" target="_blank">{{info.author1}}</a>|
                    <a href="" target="_blank">{{info.type1}}</a>|


                </div>
                <div class="bookintro">{{info.intro1}}</div>

            </div>
        </div>
        
        
        <div class="bookbox fr">
            <div class="bookimg">
                <a href={{info.index2}} target="_blank">
                    <img src={{info.img2}} alt="{{info.bookname2}}">
                </a>
            </div>
            <div class="bookinfo">
                <div class="bookname">
                    <a href={{info.index2}} target="_blank">{{info.bookname2}}</a>
                </div>
                <div class="bookilnk">
                    <a href="" target="_blank">{{info.author2}}</a>|
                    <a href="" target="_blank">{{info.type2}}</a>|

                </div>
                <div class="bookintro">{{info.intro2}}</div>
            </div>
        </div>
        
        <div class="dotline"></div>
        {% endfor %}
       
       
        
        
    </div>

    <div>
        <a href="./{{pageInfo.lastPage}}">上一页</a>
        <a href="./{{pageInfo.nextPage}}">下一页</a>
    </div>

</div>

控制台执行 根据已有的表生成model 丢进对应的app文件夹下

python manage.py inspectdb > model.py

在 views.py 中新建一个处理函数,添加一个pageNum传递页数

查了点资料,内置函数貌似没有能搭配 limit 使用的,分页器也是在 获取 objects.all() 的基础上使用的,如果要用 limit 似乎只能用原生的sql语句去读取数据,这里暂时先获取全部。

小说的基本信息包装成字典,再放入一个列表里,最后传递到页面中,因为我这里的模板是两个为一行,所以这里将两条数据合并到一个字典里了。上下页信息直接放进单独的字典即可。

def books( request,pageNum ):
    # cursor = connection.cursor()
    # cursor.excute("select * from bqk limit 0,10")
    # cursor.fetchall()
    bookInfos = Bqk.objects.all()                   # 提取数据
    bookCount = bookInfos.count()                   # 条数
    lastPage = pageNum-1 if pageNum>1 else 1        # 上一页
    nextPage = pageNum+1 if pageNum<bookCount/20+1 else pageNum<bookCount/20+1  # 下一页
    pageInfo = {"lastPage": lastPage,
                "nextPage": nextPage}
    bls = bookInfos[(pageNum-1)*20:pageNum*20] # 取对应页数的20条数据
    book_list = []
    for i,j in zip(bls[::2],bls[1::2] ):       # 2个为一组 设定参数
        info = {
            "bookname1" : i.novelname,
            "author1"   : i.author,
            "intro1"    : i.introduction,
            "type1"     : i.type,
            "img1"      : i.image,
            "index1"    : i.url,
            "bookname2" : j.novelname,
            "author2"   : j.author,
            "intro2"    : j.introduction,
            "type2"     : j.type,
            "img2"      : j.image,
            "index2"    : j.url,
        }
        book_list.append(info)
    return render(request, 'zhxs.html',
                  {'book_list': book_list,
                   'pageInfo' : pageInfo})
在urls中设置一下映射
path('booklist/<int:pageNum>',views.books)

效果:

上下页就演示下效果...可以找个插件包装下...

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值