URL에서 쿼리 문자열이 아닌 변수를 사용자 정의 태그로 전달하려고 시도하지만 int로 변환 할 때 ValueError가 발생하는 것 같습니다. 언뜻보기에 실제 정수 값 대신 "project.id"와 같은 문자열로 표시됩니다. 내가 아는 바로는 태그 매개 변수는 항상 문자열입니다. 내보기에서 매개 변수의 값을 인쇄하여 보내기 전에 매개 변수가 올바른 것으로 나타납니다. 그것은 단지 문자열 일지 모르지만 템플릿이 어쨌든 int로 변환한다면 중요하지 않다고 생각했습니다.django : 매개 변수를 사용자 정의 매개 변수로 전달합니다.
# 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