我收到错误消息' 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">
表单内容加载,但当然不会发布。有人可以帮我弄清楚如何解决这个问题吗?
答案 0 :(得分:3)
这是失败的,因为您的模板代码引用了变量page
和form
,但您并未从标记代码中传递它们。 (我希望在此处看到的错误是'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 的网址。