2014-07-26 7 views
6

Mam pewne problemy z pliszka stron.Pliszka podając `none` url ze statusem" na żywo "

z powłoki

>>> 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/' 

to działało przez jakiś czas, przeniosłem Blog Page z root do Blog Index Page w admin smolista (patrz models.py ryk) iz jakiegoś powodu, strona przeniosłem disapeared od admin, więc próbowałem powtórzyć kroki, które zrobiłem, ponownie tworząc bazę danych z ./manage.py sycndb i ./manage.py migrate, ponownie utworzyłem strony, a teraz adresy URL nie są już wyświetlane.

Dodałem punkt przerwania w wagtailcore/models.py, aby zobaczyć, co się dzieje. sekcja krytyczna wydaje się być tu:

@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 
     (i.e. 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) nigdy nie jest prawdziwe w moim przypadku.

Zmienne wewnątrz tej pętli:

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 

Wszystko to oznacza, że ​​moje strony nie są tworzone routingu. I może jeszcze zobaczyć moich stron poprawnie przy użyciu trybu podglądu z pliszka administratora, ale nie mogę znaleźć, dlaczego nie ma trasy do moich stron :(.

Oto moje 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"), 
] 

Odpowiedz

7

Generalnie należy tworzyć strony jako dzieci głównej. Wewnętrznie, oznacza to, że strona indeks blog otrzyma url_path o /home/blog/, a od /home/ jest odwzorowywany http://localhost na liście root_paths, to dać mu końcowy URL http://localhost/blog/.

jak ty widziałem, jeśli utworzysz p wieku na poziomie głównym obok strony głównej, będą istnieć poza domyślnym rekordem witryny, a więc nie będą mieć routowalnego adresu URL. Możesz jednak skonfigurować dodatkowe witryny za pomocą interfejsu administratora Django pod numerem http://localhost/django-admin/ - na przykład, jeśli chcesz hostować swój blog pod adresem http://blog.example.com/, możesz utworzyć wpis witryny dla tej domeny, którego źródłem jest strona Twojego bloga.

Powiązane problemy