'str' 对象没有属性 'relative_url'
'str' object has no attribute 'relative_url'
我在 wagtail 中加载模板标签时收到错误消息 'str' 对象没有属性 '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">
表单内容加载,但当然不会 post。有人可以帮我弄清楚如何解决这个问题吗?
你应该使用
{% url url_name %}
(注意:url,不是页面url)并且在 urls 中定义了一个名为 page 的 url .
这是失败的,因为您的模板代码引用了变量 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(),
}
我在 wagtail 中加载模板标签时收到错误消息 'str' 对象没有属性 '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">
表单内容加载,但当然不会 post。有人可以帮我弄清楚如何解决这个问题吗?
你应该使用
{% url url_name %}
(注意:url,不是页面url)并且在 urls 中定义了一个名为 page 的 url .
这是失败的,因为您的模板代码引用了变量 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(),
}