I'm having problems with wagtails.
from the shell
>>> Site.get_site_root_paths() [(1, u'/home/', u'http://localhost')] >>> BlogPage.objects.all()[0] <BlogPage: Hello wagtail> >>> BlogPage.objects.all()[0].url >>> BlogPage.objects.all()[0].full_url >>> BlogPage.objects.all()[0].status_string 'live' >>> BlogPage.objects.all()[0].url_path u'/blog/hello-wagtail/'
It worked for a while, I moved the Blog Page from root to the Blog Index Page to wagtail admin (see models.py below), and for some reason the page I moved disappeared from the administrator, so I tried to repeat the steps, which I did, having created my database again with ./manage.py sycndb and ./manage.py migrate , created the pages again and now the URLs are no longer displayed.
I added a breakpoint in wagtailcore/models.py to find out what is happening. The critical section seems to be here:
@property def url(self): """ Return the 'most appropriate' URL for referring to this page from the pages we serve, within the Wagtail backend and actual website templates; this is the local URL (starting with '/') if we're only running a single site (ie we know that whatever the current page is being served from, this link will be on the same domain), and the full URL (with domain) if not. Return None if the page is not routable. """ root_paths = Site.get_site_root_paths() for (id, root_path, root_url) in Site.get_site_root_paths(): if self.url_path.startswith(root_path): return ('' if len(root_paths) == 1 else root_url) + self.url_path[len(root_path) - 1:]
self.url_path.startswith(root_path) will never be true in my case.
The variables inside this loop are:
id = {int} 1 root_path = {unicode} u'/home/' root_paths = {list} [(1, u'/home/', u'http://localhost')] root_url = {unicode} u'http://localhost' self = {Page} Blog
All this means that my created pages are not routable. I can still browse my pages correctly using the preview mode from wagtail admin, but I cannot find out why there is no path to my pages: (.
Here is my models.py
from django.db import models from wagtail.wagtailcore.models import Page, Orderable from wagtail.wagtailcore.fields import RichTextField from wagtail.wagtailadmin.edit_handlers import FieldPanel, MultiFieldPanel, InlinePanel, PageChooserPanel from modelcluster.fields import ParentalKey class BlogPage(Page): body = RichTextField() intro = RichTextField() date = models.DateField("Post date") indexed_fields = ('body', ) search_name = "Blog Page" BlogPage.content_panels = [ FieldPanel('title', classname="full title"), FieldPanel('date'), FieldPanel('intro', classname="full"), FieldPanel('body', classname="full"), ] class LinkFields(models.Model): link_page = models.ForeignKey( 'wagtailcore.Page', null=True, blank=True, related_name='+' ) panels = [ PageChooserPanel('link_page'), ] class Meta: abstract = True class RelatedLink(LinkFields): title = models.CharField(max_length=255, help_text="Link title") panels = [ FieldPanel('title'), MultiFieldPanel(LinkFields.panels, "Link"), ] class Meta: abstract = True class BlogIndexPageRelatedLink(Orderable, RelatedLink): page = ParentalKey('main.BlogIndexPage', related_name='related_links') class BlogIndexPage(Page): intro = models.CharField(max_length=256) indexed_fields = ('body', ) search_name = "Blog Index Page" BlogIndexPage.content_panels = [ FieldPanel('title', classname="full title"), FieldPanel('intro', classname="full"), InlinePanel(BlogIndexPage, 'related_links', label="Related links"), ]