web-dev-qa-db-ja.com

Django-このタグを登録またはロードするのを忘れましたか?

使用したいカスタムタグを作成しましたが、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'。このタグを登録またはロードするのを忘れましたか?

14
123

エラーは次の行にあります:(% load pygmentize %}、無効なタグ。 {% load pygmentize %}に変更します

10
Erick M

これを試しましたか

{% load games_tags %} 

pygmentizeの代わりに上部に?

10
losee

Django 2.2 +の場合+staticfilesをHTMLテンプレートにロードしてから使用する必要がありますstaticキーワード

{% load staticfiles %}
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">

また、定義したことを確認する必要がありますSTATIC_URLsetting.py

最後に、静的ファイルが定義されたフォルダに存在することを確認してください

2
vipmaa

私は同じ問題を抱えていました、これが私がそれを解決した方法です。 この非常に優れたDjangoチュートリアル の最初のセクションに続いて、私は次のことを行いました:

  1. 次のコマンドを実行して、新しいDjangoアプリを作成します:python manage.py startapp new_app
  2. settings.pyファイルを編集して、以下をINSTALLED_APPSのリストに追加します。'new_app',
  3. new_appという名前のnew_app_tagsパッケージに新しいモジュールを追加します。
  4. Django HTMLテンプレートで、以下をファイルの先頭に、ただし{% extends 'base_template_name.html' %}の後に追加します。{% load new_app_tags %}
  5. new_app_tagsモジュールファイルで、カスタムテンプレートタグを作成します(以下を参照)。
  6. 同じDjango HTMLテンプレートで、上記のステップ4から、次のような新しいカスタムタグを使用します:{% multiply_by_two | "5.0" %}
  7. 祝う!

上記のステップ5の例:

from Django import template

register = template.Library()

@register.simple_tag
def multiply_by_two(value):
    return float(value) * 2.0
2
MikeyE
{% load static %}
<img src="{% static "my_app/example.jpg" %}" alt="My image">

テンプレートで、静的テンプレートタグを使用し、構成されたSTATICFILES_STORAGEを使用して、特定の相対パスのURLを作成します。

2
Abhishek mishra
{% load static %}

このテンプレートタグをHTMLまたはベースHTMLファイルの上に追加してください

1
Thomas John

gameprofile.htmlタグを変更してください{% endblock content %}から{% endblock %}それ以外の場合は機能しますDjangoはendblockをロードせず、エラーが発生します。

0
Pardhu Saradhi

変更する必要があります:

{% endblock content %}

{% endblock %}
0
Rahul Nama

カスタムタグを含むアプリはINSTALLED_APPSにある必要があります。あなたのディレクトリがINSTALLED_APPSにあることを確認しますか?

ドキュメント から:

INSTALLED_APPSタグを機能させるには、カスタムタグを含むアプリが{% load %}に含まれている必要があります。これはセキュリティ機能です。Pythonをインストールするたびにすべてのテンプレートライブラリへのアクセスを有効にすることなく、単一のホストマシンで多くのテンプレートライブラリのDjangoコードをホストできます。

0
Ahmed Hosny