2017-03-27 9 views
6

पर एक पृष्ठ जोड़ें, मैं एक ज्ञात माता-पिता के लिए प्रोग्रामिक रूप से एक उप पृष्ठ बनाना चाहता हूं। मैं उसे कैसे कर सकता हूँ? पृष्ठ निर्माण सिग्नल रिसीवर में होगा: पृष्ठ किसी अन्य पृष्ठ के प्रकाशन पर बनाया गया है।प्रोग्रामिक रूप से एक ज्ञात अभिभावक

उत्तर

2

प्रोग्राम के रूप में एक पृष्ठ बनाने के लिए:

page = SomePageType(title="My new page", body="<p>Hello world</p>") # adjust fields to match your page type 
parent_page.add_child(instance=page) 
4

साथ ही एक संशोधन जोड़ें।

from wagtail.wagtailcore.models import Page 
from models import MyPage 

home = Page.objects.get(id=3) # or better Page query 
my_page = models.MyPage(title="test", body="<h1>the body</h1>") 
home.add_child(instance=my_page) 

# later when a cms user updates the page manually 
# there will be no first revision to compare against unless 
# you add a page revision also programmatically. 

my_page.save_revision().publish() 

आप देख सकते हैं कि व्यवस्थापक पृष्ठों में यह कितना wagtail करता है। https://github.com/wagtail/wagtail/blob/72a1b82e3ed120eff46d87cea2a2bf1d4ad7cbc8/wagtail/wagtailadmin/views/pages.py#L211

+0

एक और उदाहरण के लिए: https://gist.github.com/veuncent/9dab311125401c1886eb7c6998f5f387 – VME

0

नीचे एक बहु भाषा पृष्ठ संरचना प्रोग्रामेटिक रूप से बनाने के लिए मेरा पूरा कोड नीचे दिया गया है। यह LanguageRedirectionPage उदाहरण के साथ "Wagtail स्वागत पृष्ठ" को प्रतिस्थापित करेगा। Wagtail Docs - Internationalization

पृष्ठ संरचना इस प्रकार है::

  • पृष्ठ
    • LanguageRedirectionPage (/ hi पर रीडायरेक्ट करेगा)
      • पृष्ठ बहु भाषा पृष्ठों के बारे में

        अधिक जानकारी (एन)

      • पृष्ठ (डी)
      • पृष्ठ (fr)

जहां LanguageRedirectionPage उदाहरण के लिए कोड अंक के अंत में बनाया साइट उदाहरण। यह हमारे आवेदन का प्रवेश बिंदु है।

# Deletes existing pages and sites 
Site.objects.all().delete() 
Page.objects.filter(pk=2).delete() # Deletes Wagtail welcome page 
root_page = Page.objects.filter(pk=1).get() 

# Adds a LanguageRedirectionPage as a child of the Root Page 
app_name = '[Your Project Name]' 
page_slug = app_name.lower().replace(" ", "") 
sub_root_page = LanguageRedirectionPage(
    title=app_name, 
    draft_title=app_name, 
    slug=page_slug, 
    live=True, 
    owner=account, 
) 

root_page.add_child(instance=sub_root_page) 
sub_root_page.save_revision().publish() 

# Adds some language pages 
for code,caption in dict(settings.LANGUAGES).items(): 
    print(code, caption) 
    sub_root_page.add_child(instance=Page(
     title=caption, 
     slug=code, 
     live=True, 
     owner=account, 
    )) 

# Adds a new Site instance (See Settings -> Sites in your Wagtail admin panel) 
Site.objects.create(
    hostname='localhost', 
    port='80', 
    site_name=app_name, 
    root_page=sub_root_page, 
    is_default_site=True, 
) 
संबंधित मुद्दे