Week4 hw2: Use Models to create Pages navi

Target

The Blog we made in last class

Use mongoengine and models create as many page as U can, and all data resources is from mongoDB. Here is the web page we made in last homework.

Week4 hw2: Use Models to create Pages navi_第1张图片
DB date structure

Step by Step

With Explorer's inspector, I found where those title's should be.


Week4 hw2: Use Models to create Pages navi_第2张图片
Before Change Anything

Now I use contexts to substitute it:

Week4 hw2: Use Models to create Pages navi_第3张图片
after replacement

Week4 hw2: Use Models to create Pages navi_第4张图片
made context
Week4 hw2: Use Models to create Pages navi_第5张图片
After replacement

Actually, context should be taken from database. So we have to connect by this code in settings.py:

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

Then made a class inherit from Document

Week4 hw2: Use Models to create Pages navi_第6张图片
made a new class according to DB Structure

Now edit views to enrich your context:

Week4 hw2: Use Models to create Pages navi_第7张图片
Use context

Now add a paginator

Week4 hw2: Use Models to create Pages navi_第8张图片
From Right to Left

At last Made a page Navigator

Week4 hw2: Use Models to create Pages navi_第9张图片
Page Navi

All code changed in this Lesson

settings.py

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)

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

views.py

from django.shortcuts import render
from blog_web.models import ItemInfo
from django.core.paginator import Paginator

def blog_view(request):
    limit = 5
    item_infos = ItemInfo.objects[:20]
    pageinator = Paginator(item_infos, limit)
    page = request.GET.get('page',1)
    # for other pages
    # http://localhost:8000/blog/?page=3
    loaded = pageinator.page(page)

    context = {
        'ItemInfo': loaded
    }

    return render(request, 'index.html', context)

models.py

from django.db import models
from mongoengine import *


# Create your models here.
class ItemInfo(Document):
    title = StringField()
    cates = ListField(StringField())
    area = ListField(StringField())
    url = StringField()
    look = StringField()
    price = StringField()
    pub_date = StringField()
    time = StringField()
    meta = {'collection': 'bjGanji'}


if __name__ == '__main__':
    connect('ganjiDB', host='127.0.0.1', port=27017)
    for i in ItemInfo.objects[:10]:
        print(i.area)

index.html

            
            

Pinned Post

{% for eachItem in ItemInfo %}
Tilo Mitra's avatar

{{ eachItem.title }}

{{ eachItem.look }} {{ eachItem.price }}

{% endfor %}
{% if ItemInfo.has_previous %} Previous Page {% endif %} ---{{ ItemInfo.number }} in {{ItemInfo.paginator.num_pages}}--- {% if ItemInfo.has_next %} Next Page {% endif %}

你可能感兴趣的:(Week4 hw2: Use Models to create Pages navi)