使用したいカスタムタグを作成しましたが、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())
このタグを使用して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 %}
gameprofile.html
に移動すると、エラーが発生します。
23行目のブロックタグが無効です: 'code'、予期される 'endblock'。このタグを登録またはロードするのを忘れましたか?
エラーは次の行にあります:(% load pygmentize %}
、無効なタグ。 {% load pygmentize %}
に変更します
これを試しましたか
{% load games_tags %}
pygmentizeの代わりに上部に?
Django 2.2 +の場合+staticfilesをHTMLテンプレートにロードしてから使用する必要がありますstaticキーワード
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
また、定義したことを確認する必要がありますSTATIC_URLsetting.py
最後に、静的ファイルが定義されたフォルダに存在することを確認してください
私は同じ問題を抱えていました、これが私がそれを解決した方法です。 この非常に優れたDjangoチュートリアル の最初のセクションに続いて、私は次のことを行いました:
python manage.py startapp new_app
settings.py
ファイルを編集して、以下をINSTALLED_APPS
のリストに追加します。'new_app',
new_app
という名前のnew_app_tags
パッケージに新しいモジュールを追加します。{% extends 'base_template_name.html' %}
の後に追加します。{% load new_app_tags %}
new_app_tags
モジュールファイルで、カスタムテンプレートタグを作成します(以下を参照)。{% multiply_by_two | "5.0" %}
上記のステップ5の例:
from Django import template
register = template.Library()
@register.simple_tag
def multiply_by_two(value):
return float(value) * 2.0
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image">
テンプレートで、静的テンプレートタグを使用し、構成されたSTATICFILES_STORAGE
を使用して、特定の相対パスのURLを作成します。
{% load static %}
このテンプレートタグをHTMLまたはベースHTMLファイルの上に追加してください
gameprofile.html
タグを変更してください{% endblock content %}
から{% endblock %}
それ以外の場合は機能しますDjangoはendblockをロードせず、エラーが発生します。
変更する必要があります:
{% endblock content %}
に
{% endblock %}
カスタムタグを含むアプリはINSTALLED_APPS
にある必要があります。あなたのディレクトリがINSTALLED_APPS
にあることを確認しますか?
ドキュメント から:
INSTALLED_APPS
タグを機能させるには、カスタムタグを含むアプリが{% load %}
に含まれている必要があります。これはセキュリティ機能です。Pythonをインストールするたびにすべてのテンプレートライブラリへのアクセスを有効にすることなく、単一のホストマシンで多くのテンプレートライブラリのDjangoコードをホストできます。