3

wagtail でテンプレート タグをロードするときに、'str' object has no attribute 'relative_url' というエラー メッセージが表示されます。

これが私のタグコードです:

from django import template
from home.models import *

register = template.Library()

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

これが私のhtmlテンプレートコードです:

{% 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>

行を削除すると:

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

フォームのコンテンツは読み込まれますが、もちろん投稿されません。誰かがこれを修正する方法を理解するのを手伝ってくれますか?

4

2 に答える 2

3

pageテンプレート コードが変数およびを参照してformいるが、タグ コードからそれらを渡していないため、これは失敗しています。(ここで表示されると予想される'NoneType' object has no attribute 'relative_url'エラーは次のとおりです。エラーは、変数として文字列を渡していることを示唆していpageます。)

これを機能させる1つの可能な方法:

@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(),
    }
于 2016-05-23T23:16:04.077 に答える