博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 和 mongdb 写一个简陋的网址,以及用django内置的分页功能
阅读量:4686 次
发布时间:2019-06-09

本文共 3366 字,大约阅读时间需要 11 分钟。

一 设置

  数据库的设置

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

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

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

 

二 定义models

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

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

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

 

三  理解接收代码

info = models.Info.objectsprint(info)

  输出:

[
,
,
,
,
,
]

 

四  关于Paginator 内置分页器

  有一点绕,友情提示!

  part 1 

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

  输出:

cd

   part 2

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

  输出:

213

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

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

  输出:

pqrst

   part 4

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

  输出:

53TrueTrue

 

五 models

import mongoengineclass Info(mongoengine.DynamicDocument):    meta = {        'collection': 'info'    }    pub_date = mongoengine.StringField(max_length=20)    area = mongoengine.ListField(mongoengine.StringField(max_length=5))    title = mongoengine.StringField(max_length=50)    url = mongoengine.URLField(max_length=100)    price = mongoengine.StringField(max_length=10)

 

六 views

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

 

七 template

    

测试

index页面

{
% for item in a_page %}

{

{ item.title}}

{

{ item.date}}

{

{ item.url}}

{

{ item.area}}

{

{ item.price}}

{
% endfor %}
{
% if a_page.has_previous %} <
{
{ a_page.previous_page_number }}
{# 这里构建 a 标签,其href 还是挺让我吃惊的 #} {
% endif %} {# href='?page=' 就是在主页后面直接拼接上#} {
{ a_page.number }} {
% if a_page.has_next %}
{
{ a_page.next_page_number }}
> {
% endif %}

 

八 urls

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

 

九 最终样式

  

 十  补充

 

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

转载于:https://www.cnblogs.com/654321cc/p/8809945.html

你可能感兴趣的文章
maven3在eclipse3.4.2中创建java web项目
查看>>
发布时间 sql语句
查看>>
黑马程序员 ExecuteReader执行查询
查看>>
记一些从数学和程序设计中体会到的思想
查看>>
题目1462:两船载物问题
查看>>
POJ 2378 Tree Cutting(树形DP,水)
查看>>
第二冲刺阶段个人博客5
查看>>
UVA 116 Unidirectional TSP (白书dp)
查看>>
第三方测速工具
查看>>
MySQL 网络访问连接
查看>>
在aws ec2上使用root用户登录
查看>>
数据访问 投票习题
查看>>
CIO知识储备
查看>>
cnblog!i'm coming!
查看>>
使用点符号代替溢出的文本
查看>>
Axios 中文说明
查看>>
fatal: remote origin already exists.
查看>>
gridview 自定义value值
查看>>
2018二月实现计划成果及其三月规划
查看>>
封装springmvc处理ajax请求结果
查看>>