https://github.com/factsbenchmarks/simple_websit_about_58

一 设置

  数据库的设置

  在settings文件中加入这样一段代码:

from mongoengine import connect
connect('xxx',host='127.0.0.1',port=)

  说明:xxx 是某个数据库的名称。

二 定义models

class Info(mongoengine.DynamicDocument):
meta = {
'collection': 'info'
}
pub_date = mongoengine.StringField(max_length=)
area = mongoengine.ListField(mongoengine.StringField(max_length=))
title = mongoengine.StringField(max_length=)
url = mongoengine.URLField(max_length=)
price = mongoengine.StringField(max_length=)

  说明:推荐继承DynamicDocument类。相关联的表的字段,不需要再Info类中都声明一次。如果是继承Document,每个field都要声明。

        Info类关联到某个表,在meta = {'collection':xx}绑定在一起。

三  理解接收代码

info = models.Info.objects
print(info)

  输出:

[<Info: Info object>, <Info: Info object>, <Info: Info object>, <Info: Info object>, <Info: Info object>, <Info: Info object>]

四  关于Paginator 内置分页器

  有一点绕,友情提示!

  part 1

from django.core.paginator import Paginator
s = 'abcdefghijklmnopqrstuvwxyz'
p = Paginator(s,)
p2 = p.page()
print(p2,type(p2))
print(p2.object_list)

  输出:

<Page  of > <class 'django.core.paginator.Page'>
cd

  part 2

s = 'abcdefghijklmnopqrstuvwxyz'
p = Paginator(s,)
p2 = p.page() print(p2.number) # 当前页码
print(p2.paginator.num_pages) #分页器的所有页码

  输出:


  part 3 下面这个就有点厉害了!

s = 'abcdefghijklmnopqrstuvwxyz'
p = Paginator(s,)
p2 = p.page() print(p2)
for i in p2 : #把当前页的元素一一打出来
print(i)

  输出:

<Page  of >
p
q
r
s
t

  part 4

s = 'abcdefghijklmnopqrstuvwxyz'
p = Paginator(s,)
p2 = p.page() print(p2)
print(p2.next_page_number())
print(p2.previous_page_number())
print(p2.has_next())
print(p2.has_previous())

  输出:


True
True

五 models

import mongoengine

class Info(mongoengine.DynamicDocument):
meta = {
'collection': 'info'
}
pub_date = mongoengine.StringField(max_length=)
area = mongoengine.ListField(mongoengine.StringField(max_length=))
title = mongoengine.StringField(max_length=)
url = mongoengine.URLField(max_length=)
price = mongoengine.StringField(max_length=)

六 views

from django.core.paginator import Paginator

def index(request):
limit =
infos = models.Info.objects
pagin = Paginator(infos,limit)
page_num = request.GET.get('page',) # 字典操作,第一页没有page=,默认取值
a_page = pagin.page(page_num)
context = {
'a_page':a_page,
}
return render(request,'index.html',context)

七 template

<body>
<a href="?name='xxx'"><p>测试</p></a>
<p>index页面</p>
<div>
{% for item in a_page %}
<hr>
<p>{{ item.title}} </p>
<p>{{ item.date}}</p>
<p>{{ item.url}} </p>
<p>{{ item.area}} </p>
<p>{{ item.price}} </p>
{% endfor %} <div>
{% if a_page.has_previous %}
< <a href="?page={{ a_page.previous_page_number }}"> {{ a_page.previous_page_number }}</a> {# 这里构建 a 标签,其href 还是挺让我吃惊的 #}
{% endif %} {# href='?page=' 就是在主页后面直接拼接上#}
{{ a_page.number }}
{% if a_page.has_next %}
<a href="?page={{ a_page.next_page_number }}"> {{ a_page.next_page_number }} </a> >
{% endif %}
</div>
</div>
</body>

八 urls

from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', views.index),
]

九 最终样式

  

十  补充

  可以看到网址是 ?page=xx&name=xxx时,在Query String Parameters 中可以准确查到。

django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能的更多相关文章

  1. django内置的分页功能

    django内置的分页功能 # 先导入需要查询的模型类 from game.models import Score # 导入内置的分页功能 from django.core.paginator imp ...

  2. 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?

    在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...

  3. 仿写一个简陋的 IOC/AOP 框架 mini-spring

    讲道理,感觉自己有点菜.Spring 源码看不懂,不想强行解释,等多积累些项目经验之后再看吧,但是 Spring 中的控制反转(IOC)和面向切面编程(AOP)思想很重要,为了更好的使用 Spring ...

  4. Django内置的分页模块

    自定义分页 未封装版: 优点:直观 缺点:代码乱,不易维护,可拓展性差 data = [] for i in range(1, 302): tmp = {"id": i, &quo ...

  5. 第二十八篇 -- 写一个简陋的WIFI服务器界面

    效果图: Dlg.cpp // WIFIWMITestDlg.cpp : implementation file // #include "stdafx.h" #include & ...

  6. 手写一个HTTP框架:两个类实现基本的IoC功能

    jsoncat: 仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架 国庆节的时候,我就已经把 jsoncat 的 IoC 功能给写了,具体可以看这篇文章&l ...

  7. django分页功能实现

    django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...

  8. 如何写一个LaTeX类文件,并设计你自己的简历

    2017/8/29 20:26:03 原文地址 https://www.sharelatex.com/blog/2011/03/27/how-to-write-a-latex-class-file-a ...

  9. 用VBA写一个计算器

    着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始==================== ...

随机推荐

  1. codevs 1115 开心的金明

     时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房 ...

  2. HDU 6069 Counting Divisors(区间素数筛法)

    题意:...就题面一句话 思路:比赛一看公式,就想到要用到约数个数定理 约数个数定理就是: 对于一个大于1正整数n可以分解质因数: 则n的正约数的个数就是 对于n^k其实就是每个因子的个数乘了一个K ...

  3. Gym - 101291C (很有意思的最短路)

    题意: 给出一张地图和机器人还有出口的位置,地图上面有障碍.然后给出UDLR上下左右四种指令,遇到障碍物或者越界的指令会忽略,剩下的继续执行. 只要到达出口就算找到出口,然后给你一串指令,让你修改指令 ...

  4. js 前端不调接口直接下载图片

    // 下载图片 downPhoto (path) { this.downloadFiles(path) }, // 下载 downloadFiles (content) { console.log(c ...

  5. 第二次团队作业-PANTHER考勤系统需求分析

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1 这个作业要求在哪里 https://edu.cnblo ...

  6. [BZOJ3631]:[JLOI2014]松鼠的新家(LCA+树上差分)

    题目传送门 题目描述: 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在“树”上.松鼠想邀 ...

  7. Java代码实现文件上传(转载)

    刚刚发表了一篇Java发送电子邮件,以前真是没注意,commons里这么多常用项目,惭愧呀,直到现在回顾;要学习的真是太多了,还是缺少真正的学习能力... 这里用到的是commons-fileuplo ...

  8. SSH中的jar包讲解

    我们在搭建SSH框架的时候,需要引入各自的一些jar包 首先,先来看一下我们使用的SSH的各自版本及引入的jar包.   struts2.3.1.2: struts2-core-2.3.1.jar j ...

  9. 746. Min Cost Climbing Stairs@python

    On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you pay ...

  10. Fortran学习笔记4(循环语句)

    Fortran学习笔记4 Fortran学习笔记4 逻辑运算 循环 Do语句 Do-While循环 循环控制 循环应用实例 逻辑运算 if命令需要和逻辑运算表达式搭配才能起到很好的效果.下面分别列出F ...