Hi Steve, Certainly sounds like the processor isn't being run. Have you confirmed that e.g. by inserting some print statements or using a debugger?
Is the app your processor is defined in definitely in INSTALLED_APPS? page_processors.autodiscover won't work otherwise. BTW if you don't use a debugger, I'd recommend it. I use PyCharm which makes it really easy to insert a breakpoint and follow the code as it executes, but you can also use pdb to do it more manually. You could try putting a breakpoint at your @processor_for(GeolSitesList) line to see if it's being executed and when, and one in PageMiddleware.process_view() to see which processors are registered and being executed. Cheers, Alex On Wed, Feb 3, 2016 at 6:44 AM, Steve Harwin <[email protected]> wrote: > Thanks Chris, > > The empty string results from the page processor not being called as far > as I can tell. I have a view that is basically the same as this page > processor and it works. > > Cheers, > Steve > > > On Wednesday, January 27, 2016 at 6:42:06 AM UTC+11, > [email protected] wrote: >> >> Hi Steve, >> >> I haven't looked into your problem to deeply and am far from an expert. >> But: Are you sure the pageprocessor is not being called or is the >> pageprocessor not returning the correct result? The error code you posted >> says "Expected table or queryset, not 'str'.". Couldn't it be the >> pageprocessor is return an empty string? >> >> Chris >> >> Am Freitag, 22. Januar 2016 05:27:15 UTC+1 schrieb Steve Harwin: >>> >>> Hi, >>> >>> I am not sure if my method for displaying a table of model data isthe >>> best way to do it, but i essentially followed the examples in the docs and >>> on this forum... unfortunately my page processor does not seem to be >>> working. Here is the code: >>> In models.py: >>> class GeolSitesList(Page): >>> ''' >>> A page to list GeolSites >>> ''' >>> >>> class Meta: >>> verbose_name = _("Sites List") >>> verbose_name_plural = _("Sites Lists") >>> In tables.py: >>> from ausgeolapp.models import * >>> import django_tables2 as tables >>> from django.utils.safestring import mark_safe >>> from django.utils.html import escape >>> >>> >>> class geolSitesTable(tables.Table): >>> class Meta: >>> model = geolsites >>> exclude = ("geom", ) >>> attrs = {'class': 'SitesTable'} >>> def render_site(self, value): >>> return mark_safe(escape(value)+'<br><img id="sitethumb" >>> width="300" src="http://ausgeol.utas.edu.au/data/public/AusGeolSites/'+ >>> escape(value)+'/'+escape(value)+'_thumb.jpg">') >>> In page_processors.py: >>> from mezzanine.pages.page_processors import processor_for >>> >>> >>> from django.db import models >>> from models import GeolSitesList >>> from django.http import HttpResponse >>> from django.template import loader >>> from ausgeolapp.models import * >>> from ausgeolapp.tables import geolSitesTable >>> import django_tables2 as tables >>> >>> >>> @processor_for(GeolSitesList) >>> def geolSites_List(request, page): >>> sitelist = geolsites.objects.all() >>> sitelisttable = geolSitesTable(sitelist) >>> sitelisttable.paginate(page=request.GET.get('page', 1), per_page=25) >>> return {"sitelisttable": sitelisttable} >>> I also tried: @processor_for("sites") >>> In geolsiteslist.html >>> {% extends "pages/page.html" %} >>> >>> >>> {% load mezzanine_tags staticfiles %} >>> {% block extra_assets %} >>> <link rel="stylesheet" href="{% static 'css\ausgeol-tables.css' %}" >>> type="text/css" /> >>> {% endblock %} >>> {% load django_tables2 %} >>> {% block main %} >>> >>> >>> {% render_table sitelisttable %} >>> {% endblock %} >>> I get the "Expected table or queryset, not 'str'." error because the >>> sitelisttable >>> is empty... the context is not being added because the page processor is >>> not being called. After hunting for suggestions I added the following to >>> urls.py: >>> from mezzanine.pages import page_processors >>> >>> >>> page_processors.autodiscover() >>> and also tried adding this to my url patterns but it made no difference >>> and I would have thought it was not needed since I am adding a >>> GeolSitesList page via mezzanine admin (the page is called 'sites'): >>> url("^sites/$", "mezzanine.pages.views.page", {"slug": "sites"}, name= >>> "GeolSitesList"), >>> >>> and I tried this as well >>> url("^sites/$", "mezzanine.pages.views.page", {"slug": "sites"}, name= >>> "sites"), >>> >>> I am not sure what else to try... please can someone point me to my >>> mistake. I am using Python 3.3, Postgresql 9.4 (PostGIS 2), Django 1.8.6, >>> Mezzanine 4.0.1, and the latest django-tables2. >>> Thanks, >>> Steve >>> >>> >>> -- > You received this message because you are subscribed to the Google Groups > "Mezzanine Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Mezzanine Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
