장고를 배우는 중입니다. 현재 내 자신의 템플릿 태그를 만드는 데 어려움이 있습니다. 메뉴 항목이있는 문자열을 기반으로 메뉴를 만드는 무언가를 만들려고합니다.Django Node AttributeError
{{항목}} {% %를 forloop.last하지 않을 경우} {menu_items의 %에서 항목에 대한 %}
: 장고 템플릿 언어에서, 다음은 내가 무엇을 찾고 생산할 것 |
def construct_menu(parser, token): try: tag_name, menu_items = token.split_contents() except ValueError: msg = '%r tag requires a space separated quote of strings.' % token.split_contents()[0] raise template.TemplateSyntaxError(msg) return MenuNode(menu_items[1:-1]) class MenuNode(template.Node): def __init__(self, menu_items): self.menu_items = str(self.menu_items) def render(self, context): ... register.tag('menu', construct_menu)
을 그리고 여기에 내가 오류가있다 : {% ENDIF %}
{% ENDFOR %} 여기
내가 지정된 templatetags 응용 프로그램에서 입력하려고 무엇
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/news/
Django Version: 1.5.1
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'news',
'showroom',
'contact',
'templatetags')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Template error:
In template /Users/per/Documents/Tilde/templates/home.html, error at line 1
'MenuNode' object has no attribute 'menu_items'
1 : {% extends "base.html" %}
2 :
3 : {% block title %}
4 : Home page! :D
5 : {% endblock %}
6 : for post in posts
7 : post
8 : endfor
9 : {% block content %}
10 : This is where the news goes.
11 : {% endblock %}
Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
115. response = callback(request, *callback_args, **callback_kwargs)
File "/Users/per/Documents/Tilde/news/views.py" in home
6. return render(request, 'home.html')
File "/Library/Python/2.7/site-packages/django/shortcuts/__init__.py" in render
53. return HttpResponse(loader.render_to_string(*args, **kwargs),
File "/Library/Python/2.7/site-packages/django/template/loader.py" in render_to_string
177. return t.render(context_instance)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
140. return self._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
830. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
102. compiled_parent = self.get_parent(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in get_parent
99. return get_template(parent)
File "/Library/Python/2.7/site-packages/django/template/loader.py" in get_template
146. template, origin = find_template(template_name)
File "/Library/Python/2.7/site-packages/django/template/loader.py" in find_template
135. source, display_name = loader(name, dirs)
File "/Library/Python/2.7/site-packages/django/template/loader.py" in __call__
43. return self.load_template(template_name, template_dirs)
File "/Library/Python/2.7/site-packages/django/template/loader.py" in load_template
49. template = get_template_from_string(source, origin, template_name)
File "/Library/Python/2.7/site-packages/django/template/loader.py" in get_template_from_string
157. return Template(source, origin, name)
File "/Library/Python/2.7/site-packages/django/template/base.py" in __init__
125. self.nodelist = compile_string(template_string, origin)
File "/Library/Python/2.7/site-packages/django/template/base.py" in compile_string
153. return parser.parse()
File "/Library/Python/2.7/site-packages/django/template/base.py" in parse
274. compiled_result = compile_func(self, token)
File "/Users/per/Documents/Tilde/templatetags/templatetags/tagtest.py" in construct_menu
34. return MenuNode(menu_items[1:-1])
File "/Users/per/Documents/Tilde/templatetags/templatetags/tagtest.py" in __init__
38. self.menu_items = str(self.menu_items)
Exception Type: AttributeError at /news/
Exception Value: 'MenuNode' object has no attribute 'menu_items'
저는 기본적으로 전체 내용을 http://www.djangobook.com/en/2.0/chapter09.html에서 복사하고 있습니다. 이 오류는 나에게 이해가되지 않는다. 나는 모든 유효한 속성을 관련 장소에 전달한다고 생각합니다. 어떤 충고?
미리 감사드립니다.
self.menu_items = str(self.menu_items)
을하지만이 __init__
방법의 첫 번째 라인 :