いくつかのカスタム テンプレート タグをアプリにもう少し実装して、より適切に構造化しようとしています。厄介な部分は、チュートリアルタイプの投稿に従ってコードを取得したことですが、それでも機能しません。
thisとcurrent_timeに従っていくつかのタグを実装しようとしましたが、理解できないエラーが発生しています。
まず、最新の投稿のフィルター、または私の場合は最新の画面が表示されます
Exception Value: No module named gallery
私のプロジェクトは「S3gallery」と呼ばれ、私のアプリは「ギャラリー」と呼ばれ、私のモデルは「スクリーンショット」と呼ばれます。タグのモデル引数は、ドキュメントで app_name.Model_name を取ると言っているので、私はこれにこだわっています。
カスタム タグ コードは次のようになります。
from django.template import Library, Node
from django.db.models import get_model
register = Library()
class LatestContentNode(Node):
def __init__(self, model, num, varname):
self.num, self.varname = num, varname
self.model = get_model(*model.split('.'))
def render(self, context):
context[self.varname] = self.model._default_manager.all()[:self.num]
return ''
def get_latest(parser, token):
bits = token.contents.split()
if len(bits) != 5:
raise TemplateSyntaxError, "get_latest_screens tag takes exactly three arguments"
if bits[3] != 'as':
raise TemplateSyntaxError, "second argument to the get_latest_screens tag must be 'as'"
return LatestContentNode(bits[1], bits[2], bits[4])
get_latest = register.tag(get_latest)
私はそれを使用してテンプレートにロードしようとしましたが、{% load get_latest gallery.screenshots 5 as recent_screens %}
私が見た例ではタグに「ロード」を使用していませんが、そうするとDjangoはタグを認識しません。私はそれで迷っていますが、正しい道を進んでいると思いますか. これに関するヘルプは大歓迎です:)