django를 위한 소스 태그
6573 단어 django
#coding=utf-8
from django import template
register = template.Library()
#register.tag('source', do_source)
@register.tag(name="source")
def do_source(parser, token):
"""
source can direct insert method return string into html
{% source myapp mymethod %}
or
{% source myapp mymethod arg0 arg1 arg2 %}
or
{% source myapp mymethod arg0,arg1,arg2 %}
"""
try:
# split_contents() knows not to split quoted strings.
args = token.split_contents()
except ValueError:
raise template.TemplateSyntaxError("%r tag requires at least two arguments" % token.contents.split()[0])
if len(args) < 2:
raise template.TemplateSyntaxError("%r tag requires at least two arguments" % token.contents.split()[0])
model_name = args[1]
method_name = args[2]
params = []
if len(args) >=3:
params += args[3:]
if len(params) == 1:
if ',' in params[0]:
params = ['%s' % arg for arg in params[0].split(",")]
# try to import this method
try:
models = __import__(model_name, fromlist = [method_name])
method = getattr(models, method_name)
except:
raise template.TemplateSyntaxError("Can't import %s[%s]" % (model_name, method_name))
return SourceNode(method, params)
class SourceNode(template.Node):
def __init__(self, method, params):
self.method = method
self.params = params
def render(self, context):
try:
value = self.method(context, (arg for arg in self.params))
except:
from django.conf import settings
if settings.DEBUG:
import sys,traceback
str = '<p> [%s] [%s] </p>' % (self.method, self.params)
str += '<p> [%s] </p>' % traceback.format_exception(*sys.exc_info())
return str
else:
return str
return value
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.