2016-05-23 28 views
1

Ich bekomme die Fehlermeldung 'str' Objekt hat kein Attribut 'relative_url' beim Laden eines Schablonen-Tags in der Bachstelze.'str' Objekt hat kein Attribut 'relative_url'

Hier ist mein Tag-Code:

from django import template 
from home.models import * 

register = template.Library() 

@register.inclusion_tag('home/subscribe_form.html') 
def test_vdcristo(): 
    return {} 

Hier ist mein HTML-Template-Code ist:

<form action="{% pageurl page %}" method="POST"> 

T:

{% load wagtailcore_tags vdecristo_tags %} 
<form action="{% pageurl page %}" method="POST"> 
    {% csrf_token %} 
    <div class="shop-subscribe bg-color-green margin-bottom-40"> 
     <div class="container"> 
       <div class="row"> 
        <div class="col-md-8 md-margin-bottom-20"> 
          <h2>Subscribase para mantenerse<strong> informado</strong></h2> 
        </div> 




        <div class="col-md-4"> 
          <div class="input-group"> 


          <input type="text" class="form-control" placeholder="Correo Electronico..." {{ form.subscribase }}> 
            <span class="input-group-btn"> 
              <button class="btn" type="submit"><i class="fa fa-envelope-o"></i></button> 
            </span> 

          </div> 

           {{ form.subscribase.errors }} 
         </div> 
       </div> 
     </div><!--/end container--> 
    </div> 

</form> 

Wenn ich die Zeile entfernen Er bildet Inhalte, lädt aber natürlich nicht. Kann mir jemand helfen, herauszufinden, wie ich das beheben kann? (: Url, PageUrl nicht lieferbar) und eine URL Seite definiert in Urls benannt haben

Antwort

1

Dies schlägt fehl, da sich Ihr Vorlagencode auf die Variablen page und form bezieht, aber Sie übergeben sie nicht von Ihrem Tag-Code. (Der Fehler würde ich erwarten, hier zu sehen wäre 'NoneType' object has no attribute 'relative_url' - Ihr Fehler deutet darauf hin, dass Sie eine Zeichenfolge als page Variable vorbei sind.)

Eine Möglichkeit, diese Arbeit zu machen:

@register.inclusion_tag('home/subscribe_form.html') 
def test_vdcristo(): 
    # Look up the relevant form page by slug; replace FormPage and 'subscribe-now' 
    # as appropriate for your site 
    page = FormPage.objects.get(slug='subscribe-now') 
    return { 
     'page': page, 
     'form': page.get_form(), 
    } 
+0

Ich erhalte jetzt die Fehlermeldung KeyError at/radio/'request' beim Laden des test_vdcristo-Tags. Irgendwelche zusätzlichen Vorschläge? – Leo

+1

Sie müssen wahrscheinlich die Variable 'request' aus dem Kontext der übergeordneten Vorlage abrufen. Weitere Informationen finden Sie im Abschnitt über 'takes_context' unter https://docs.djangoproject.com/en/1.9/howto/custom-template-tags/#. inclusion-tags - und übergibt "request": context ['request'] 'in der Liste der zurückgegebenen Variablen. – gasman

+0

Übergabe der 'Anfrage': Kontext ['Anfrage'] behebt das Problem. Vielen Dank! – Leo

0

Sie sollten

{% url url_name %} 

zu verwenden.

+0

Dies würde ist für Django im Allgemeinen korrekt, aber in Wagtail '{% pageurl ...%}' ist das passende Tag, das verwendet werden soll, wenn die URL zu einem Wagtail-Seitenobjekt gehören soll. – gasman

Verwandte Themen