2014-07-26 17 views
6

Bazı sayfalarda sıkıntılarla karşılaşıyorum. Bir süre çalıştı kabuk"Canlı" durumu olan "none" url veren kuyruk sayfalar

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

den

, ben ( models.py feryat bakınız) wagtail yönetici bir Blog Index Page için root den Blog Page taşındı ve bazı nedenlerden dolayı, sayfa i? Disapeared taşındı admin bu yüzden yeniden oluşturduğum adımları yinelemeye çalıştım veritabanımla yeniden ./manage.py sycndb ve ./manage.py migrate, tekrar oluşturulan sayfalar ve şimdi URL'ler artık gösterilmiyor.

Neler olup bittiğini görmek için wagtailcore/models.py numaralı telefondan bir kesme noktası ekledim. Kritik bölüm buralarda görünmektedir:

@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) benim durumumda asla doğru değildir. Bu döngü içinde

Değişkenler:

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 

Bütün bunlar benim oluşturulan sayfalar yönlendirilebilir olmadığı anlamına gelmektedir. Hala wagtail yöneticiden önizleme modunu kullanarak doğru benim sayfalarını görüntülemek, ancak sayfalarıma :(hiçbir yol yoktur neden bulamıyorum.

İşte benim 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"), 
] 

cevap

7

Genellikle oluşturmalıdır sayfalar var ana çocukları olarak. Dahili olarak, bu blogunuzun dizin sayfası /home/blog/ bir url_path alacaksınız ve /home/ beri root_paths listesinde, bu o http://localhost/blog/ nihai URL verecektir http://localhost eşleştirilmiş anlamına gelir. size şöyle

gördünüz mü Ana sayfanın yanında kök düzeyinde yaşlanır, varsayılan Site kaydının dışında bulunurlar ve böylece yönlendirilebilir bir URL'ye sahip olmazlar. Bununla birlikte, http://localhost/django-admin/ adresindeki Django yönetici arayüzüyle ek siteler oluşturabilirsiniz. Örneğin, blogunuzu http://blog.example.com/ adresinde barındırmak istiyorsanız, blog dizin sayfanızda bu alan adı için bir Site girişi oluşturabilirsiniz.

İlgili konular