Django(2)——运用数据库为你的网页添加翻页功能
对于这个功能,我们要对你的app文件下的几个子文件进行更改:
1、首先是models.py文件
from django.db import models
# Create your models here.
from mongoengine import *
from mongoengine import connect
connect('ceshi', host='127.0.0.1', port=27017)
class ArtInfo(Document):
title = StringField()
type = StringField()
price = StringField()
new = StringField()
url = StringField()
place = StringField()
time = StringField()
#必须列出你数据库中所有的数据项,否则会出错;
meta = {'collection' : 'ganji_info'}
#这里是告知数据源具体是哪张表;
我的数据库中的数据项是这样的:
2、接着是view.py文件
from django.shortcuts import render
from django.core.paginator import Paginator
from django_web.models import ArtInfo
def index(request):
limit = 5 #这里是,每页限制的信息条数
art_info = ArtInfo.objects#[:30] #设置需要遍历的信息条数,最后的话就把这个删了就行了;
paginater = Paginator(art_info, limit) #设置分页信息;
page = request.GET.get('page', 1)
loaded = paginater.page(page)
# content = {
# 'title' : art_info[0].title,
# 'des' : art_info[0].type,
# 'score' : art_info[0].price,
# 'tag' : art_info[0].new
# }
content = {
'ArtInfo' : loaded,
'counts' : art_info.count(),
'last_time' : art_info.order_by('-pub_data').limit(1),
}
return render(request, 'index_data.html', content)
3、修改templates文件下面的html文件;
由于打字说起来比较麻烦,所以我直接用两个网页文件代码进行说明;
{% load static %} #这个应该很熟悉了吧!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>A AWESOME WEB !</title>
<link rel="stylesheet" href="{% static 'css/semantic.css'%}">
<script src="{% static 'js/jquery.min.js' %}"></script>
<script src="{% static 'js/semantic.js' %}"></script>
<script src="{% static 'js/Highcharts.js' %}"></script>
<script src="{% static 'js/highcharts-more.js' %}"></script>
<script src="{% static 'js/exporting.js' %}"></script>
</head>
<body>
<div class="ui thin visible left sidebar inverted vertical menu">
<div class="header item">
<img src="{% static 'images/logo2.png' %}"> #图片这个路径当然也要改了;
</div>
<div class="item">
Doucument
<i class="browser icon"></i>
</div>
<div class="item">
Charts
<i class="bar chart icon"></i>
</div>
<div class="item">
Others
<i class="idea icon"></i>
</div>
</div>
<div class="pusher">
<div class="ui menu">
<div class="header item" id="menu">
Menu
<i class="content icon"></i>
</div>
<div class="item">
About us
</div>
<div class="item">
Location
</div>
<div class="item">
Others
</div>
</div>
{% block content %}{% endblock %} #这里,看这里,这里才是最精华的部分;
</div>
</body>
</html>
紧接着我们来看下一个文件;
如果你有一个网站,大概有一千个网页,你不会这一千多个网页全部都是你自己写吧;所以呢,我们将模板相同的网页中不同的部分拿出来,这样的话用的时候再添加进来这样不是极大的降低了我们重复工作吗?
{% extends 'index.html' %} #这句话表名你要往那个文件中添加;
{% block content %} #这个则与上面的相呼应,必须要写;
<div class="ui equal width grid" style="width: 70%; margin:5px 0 5px 0; ">
<div class="row">
<div class="column">
<div class="ui red segment">
<div class="ui statistic">
<div class="value">
{{ counts }} #这个counts就是view.py文件中的变量;
</div>
<div class="label">
Douments
</div>
</div>
</div>
</div>
<div class="column">
<div class="ui blue segment">
<div class="ui statistic">
<div class="value">
2,000
</div>
<div class="label">Document</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="column">
<div class="ui segment">
<div class="ui divide items">
{% for item in ArtInfo %} #这里我们对数据库中的数据进行迭代实现;
<div class="item">
<div class="content">
<div class="header">
{{ item.title }} #看,这是标题;
</div>
<div class="description">
<p>{{ item.new }}</p> #看,这是。。。
</div>
<div class="extra">
<div class="ui label">
{{ item.type }} #还有这;
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
#这里就是我们对翻页功能的实现:
<div class="ui small pagination menu">
{% if ArtInfo.has_previous %} #是否含有前一页;
<a class="icon item" href="?pag={{ ArtInfo.previous_page_number }}"> #显示前一页的页码;
<i class="icon left arrow"></i>
</a>
{% endif %}
<div class="disabled item" >
{{ ArtInfo.number }} of {{ ArtInfo.paginator.num_pages }} #显示当前页的页码;
</div>
{% if ArtInfo.has_next %} #是否含有后一页;
<a class="icon item" href="?page={{ ArtInfo.next_page_number }}"> #显示后一页的页码;
<i class="icon right arrow"></i>
</a>
{% endif %}
</div>
{% endblock %}
然后,基本上就这些东西。后面有错或者是别的我会更新的!