URL(クエリ文字列ではない)からカスタムタグに変数を渡そうとしていますが、intに変換するとValueErrorが発生しているようです。一見すると、実際の整数値ではなく、「project.id」のような文字列として入力されているように見えます。私が理解していることから、タグパラメータは常に文字列です。送信する前にビューのパラメーターの値を印刷すると、正しいように見えます。文字列かもしれませんが、テンプレートがそれをintに変換するかどうかは問題ではないと思いましたよね?
# in urls.py
# (r'^projects/(?P<projectId>[0-9]+)/proposal', proposal_editor),
# projectId sent down in RequestContext as 'projectId'
# in template
# {% proposal_html projectId %}
# in templatetag file
from django import template
register = template.Library()
@register.tag(name="proposal_html")
def do_proposal_html(parser, token):
try:
# split_contents() knows not to split quoted strings.
tagName, projectId = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError, "%r tag requires a single argument" % token.contents.split()[0]
print(projectId)
projectId = int(projectId)
return ProposalHtmlNode(int(projectId))
class ProposalHtmlNode(template.Node):
def __init__(self, projectId):
self.projectId = projectId