django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能
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内置的分页功能的更多相关文章
- django内置的分页功能
django内置的分页功能 # 先导入需要查询的模型类 from game.models import Score # 导入内置的分页功能 from django.core.paginator imp ...
- 学了C语言,如何利用cURL写一个程序验证某个网址的有效性?
在<C程序设计伴侣>以及这几篇关于cURL的文章中,我们介绍了如何利用cURL写一个下载程序,从网络下载文件.可是当我们在用这个程序下载文件时,又遇到了新问题:如果这个网址是无效的,那么我 ...
- 仿写一个简陋的 IOC/AOP 框架 mini-spring
讲道理,感觉自己有点菜.Spring 源码看不懂,不想强行解释,等多积累些项目经验之后再看吧,但是 Spring 中的控制反转(IOC)和面向切面编程(AOP)思想很重要,为了更好的使用 Spring ...
- Django内置的分页模块
自定义分页 未封装版: 优点:直观 缺点:代码乱,不易维护,可拓展性差 data = [] for i in range(1, 302): tmp = {"id": i, &quo ...
- 第二十八篇 -- 写一个简陋的WIFI服务器界面
效果图: Dlg.cpp // WIFIWMITestDlg.cpp : implementation file // #include "stdafx.h" #include & ...
- 手写一个HTTP框架:两个类实现基本的IoC功能
jsoncat: 仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架 国庆节的时候,我就已经把 jsoncat 的 IoC 功能给写了,具体可以看这篇文章&l ...
- django分页功能实现
django内置的分页功能需要引入内置模块from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger Pagina ...
- 如何写一个LaTeX类文件,并设计你自己的简历
2017/8/29 20:26:03 原文地址 https://www.sharelatex.com/blog/2011/03/27/how-to-write-a-latex-class-file-a ...
- 用VBA写一个计算器
着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分 开始==================== ...
随机推荐
- java动态代理使用详解
我们都知道AOP的原理就是java的动态代理机制,下面我就对java的动态代理机制进行学习与总结 java动态代理的实现有两个重要的类: Proxy:类 作用就是用来动态创建一个代理对象的类 Invo ...
- (十)maven之排除冲突jar包
排除冲突jar包 jar包冲突 <dependencies> <dependency> <groupId>org.springframework</group ...
- iTOP-IMX6UL 实战项目:ssh 服务器移植到 arm 开发板
实验环境:迅为提供的Ubuntu12.04.2 以及虚拟机 编译器:arm-2009q3 编译器 开发板系统:QT系统 开发板使用手册中给Windows 系统安装了 ssh 客户端,给 Ubunt ...
- 线段树成段更新模板POJ3468 zkw以及lazy思想
别人树状数组跑几百毫秒 我跑 2500多 #include<cstdio> #include<map> //#include<bits/stdc++.h> #inc ...
- (五)VMware Harbor 部署之SSL
转自:https://www.cnblogs.com/Rcsec/p/8479728.html 1 .签名证书与自签名证书 签名证书:由权威颁发机构颁发给服务器或者个人用于证明自己身份的东西. 自签名 ...
- WPF知识点全攻略08- 依赖属性
依赖属性是WPF不得不提,不得不会系列又一 先来看一下,自定义依赖属性的写法 public static readonly DependencyProperty IconProperty = Depe ...
- Android之父Andy Rubin:被乔布斯羡慕嫉妒的天才
今年中国掀起一股“苹果热”,智能手机iPhone.平板电脑iPad遭疯抢,一度卖断货.然而,令许多人意想不到的是,在“苹果”的老家——美国市场,智能手机中卖得最火的并不是iPhone,而是Androi ...
- [BZOJ3307]:雨天的尾巴(LCA+树上差分+权值线段树)
题目传送门 题目描述: N个点,形成一个树状结构.有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多的是哪种物品. 输入格式: 第一 ...
- House of Spirit(fastbin)
0x01 fastbin fastbin所包含chunk的大小为16 Bytes, 24 Bytes, 32 Bytes, … , 80 Bytes.当分配一块较小的内存(mem<=64 Byt ...
- UIScrollView和MultiThreading、UITextField、Keyboard