123*_*123 13 python django django-templates templatetags pygments
我已经创建了一个我想要使用的自定义标签,但是Django似乎无法找到它.我的templatetags目录设置如下:
pygmentize.py
from pygments import highlight
from pygments.lexers import get_lexer_by_name
from django import template
from pygments.formatters.other import NullFormatter
register = template.Library()
@register.tag(name='code')
def do_code(parser,token):
code = token.split_contents()[-1]
nodelist = parser.parse(('endcode',))
parser.delete_first_token()
return CodeNode(code,nodelist)
class CodeNode(template.Node):
def __init__(self,lang,code):
self.lang = lang
self.nodelist = code
def render(self,context):
code = self.nodelist.render(context)
lexer = get_lexer_by_name('python')
return highlight(code,lexer,NullFormatter())
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用此标记来呈现代码gameprofile.html.
gameprofile.html
(% load pygmentize %}
{% block content %}
<title>{% block title %} | {{ game.title }}{% endblock %}</title>
<div id="gamecodecontainer">
{% code %}
{{game.code}}
{% endcode %}
</div>
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)
当我导航到时gameprofile.html,我收到一个错误:
第23行的块标记无效:'code',预期'endblock'.您是否忘记注册或加载此标记?
vip*_*maa 15
对于 Django 2.2 到 3,您必须先在 html 模板中加载静态文件,然后再使用static关键字
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
Run Code Online (Sandbox Code Playgroud)
对于其他版本使用静态
{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
Run Code Online (Sandbox Code Playgroud)
您还必须检查您是否在setting.py 中定义了STATIC_URL
最后,确保静态文件存在于定义的文件夹中
小智 10
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image">
Run Code Online (Sandbox Code Playgroud)
在您的模板中,使用静态模板标记使用配置的STATICFILES_STORAGE.
你试过这个吗?
{% load games_tags %}
Run Code Online (Sandbox Code Playgroud)
在顶部而不是pygmentize?
小智 9
错误在此行:(% load pygmentize %},无效标记.将其更改为{% load pygmentize %}
小智 5
遇到了同样的问题,但我刚刚{% load static %}从我的扩展模板中添加并且它有效。因此,在您的情况下,如果您尝试gameprofile.html从基本模板加载,您只需要像这样添加它:
{% extends 'some_base.html' %}
{% block content %}
{% load pygmentize %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
62245 次 |
| 最近记录: |