วันอาทิตย์ที่ 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 ขึ้นมาให้เราเลือก
สมัครสมาชิก:
ส่งความคิดเห็น
(
Atom
)

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