ระบบควบคุมในการกระจายและเข้าถึงข่าวสาร การประกาศ

วันอาทิตย์ที่ 14 กุมภาพันธ์ พ.ศ. 2559

django cms #7 Extending the nevigation menu

ไม่มีความคิดเห็น :
  เราจะสร้าง menu สำหรับแสดงรายชื่อทุก poll โดยแต่ละชื่อของแต่ละ polls จะนำทางไปยัง poll นั้นๆด้วย มีวิธีการสร้าง ดังนี้
  สร้างไฟล์ cms_menus.py ในไดเรกทอรี poll-plugin แล้วเขียนโค้ด ดังนี้


from django.core.urlresolvers import reverse
from django.utils.translation import ugettext_lazy as _

from cms.menu_bases import CMSAttachMenu
from menus.base import NavigationNode
from menus.menu_pool import menu_pool

from polls.models import Poll


class PollsMenu(CMSAttachMenu):
    name = _("Polls Menu")  # give the menu a name this is required.

    def get_nodes(self, request):
        """
        This method is used to build the menu tree.
        """
        nodes = []
        for poll in Poll.objects.all():
            node = NavigationNode(
                title=poll.question,
                url=reverse('polls:detail', args=(poll.pk,)),
                id=poll.pk,  # unique id for this node within the menu
            )
            nodes.append(node)
        return nodes

menu_pool.register_menu(PollsMenu)

อธิบายโค้ดแต่ละส่วน
  สร้าง class PollsMenu แล้ว register ให้ใช้งาน
  กำหนดชื่อ Polls Menu ไว้ถูกเรียกใช้
  ใน get_nodes() ทำการเข้าถึงทุก poll แล้วนำมาแสดงใน menu

ถึงขั้นนี้ทำการเปิดไฟล์ cms_apps.py แล้วเพิ่มโค้ด
   from polls_plugin.cms_menus import PollsMenu
ในส่วนบนของโค้ดและเพิ่ม
   menus = [PollsMenu]
 ใน class PollsApphook

ทดลอง runserver จะพบว่ามี list ของ poll ขึ้นมาให้เราเลือก




ไม่มีความคิดเห็น :

แสดงความคิดเห็น