' STR'对象没有属性' relative_url'

时间:2016-05-23 21:47:49

标签: django django-forms tags django-templates wagtail

我收到错误消息' str'对象没有属性' relative_url'在wagtail中加载模板标签时。

这是我的代码:

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">

表单内容加载,但当然不会发布。有人可以帮我弄清楚如何解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

这是失败的,因为您的模板代码引用了变量pageform,但您并未从标记代码中传递它们。 (我希望在此处看到的错误是'NoneType' object has no attribute 'relative_url' - 您的错误表明您正在将字符串作为page变量传递。)

使这项工作成为可能的一种方法:

@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(),
    }

答案 1 :(得分:-1)

您应该使用

{% url url_name %}

(注意:网址,不是pageurl)并在网址中定义了名为 page 的网址。