[PYTHON] So implementieren Sie Rails-Helfer-ähnliche Funktionen in Django

Einführung

Dieser Artikel ist eine persönliche Notiz, als ich zum ersten Mal eine App mit Django erstellt und nach Funktionen wie Rails Helper gesucht habe.

Umgebung

Python(3.6.2) Django(2.1.7)

Benutzerdefinierter Vorlagenfilter

Der Rails-Helfer kann die im Helfer auf der Ansichtsseite definierte Methode aufrufen. Auch in Django habe ich untersucht, ob die in einer anderen Datei definierte Methode auf der Vorlagenseite aufgerufen werden kann, und es scheint, dass sie durch Erstellen eines benutzerdefinierten Vorlagenfilters realisiert werden kann.

Implementierungsmethode

Sie können einen benutzerdefinierten Vorlagenfilter erstellen, indem Sie die folgenden Schritte ausführen.

1. Erstellen Sie ein Verzeichnis mit dem Namen templatetags

Erstellen Sie ein Verzeichnis mit dem Namen templatetags im App-Verzeichnis der Vorlage, in dem Sie den benutzerdefinierten Filter installieren möchten.

2. Platzieren Sie \ _ \ _ init__.py in Vorlagen-Tags

Platzieren Sie \ _ \ _ init__.py, um die von Ihnen erstellten Dateien im Templatetags-Verzeichnis zu modularisieren.

3. Erstellen Sie eine Datei, die einen benutzerdefinierten Vorlagenfilter in Vorlagen-Tags definiert

Rufen Sie zuerst die Vorlagenbibliothek auf.

from django import template
register = template.Library()

Registrieren Sie Ihren eigenen benutzerdefinierten Vorlagenfilter in dieser Bibliothek. Jetzt können Sie die auf der Vorlagenseite erstellte Methode aufrufen.

@register.filter
def transrate_media_number(var):
  if var == 0:
    media_name = 'Guru Navi'
  elif var == 1:
    media_name = 'Essen Log'
  elif var == 2:
    media_name = 'Paprika'
  else:
    media_name = 'Andere'
  return media_name

custom_filter.py


from django import template
register = template.Library()

@register.filter
def transrate_media_number(var):
  if var == 0:
    media_name = 'Guru Navi'
  elif var == 1:
    media_name = 'Essen Log'
  elif var == 2:
    media_name = 'Paprika'
  else:
    media_name = 'Andere'
  return media_name

Das Endergebnis ist eine Verzeichnisstruktur ähnlich der folgenden.

app/  ├ models.py  ├ templatetags/  │ ├ __init__.py  │ └ custom_filter.py  └ views.py

4. Rufen Sie auf der Vorlagenseite auf

Laden Sie zunächst den aus der Vorlage erstellten benutzerdefinierten Vorlagenfilter.

  - load custom_filter

Der geladene benutzerdefinierte Vorlagenfilter kann in der folgenden Form verwendet werden.

  {{Streit|Name des benutzerdefinierten Vorlagenfilters}}

python:template_file.html.haml


- load custom_filter

%table
  {% for data in datum %}
    %tr
      %td
        {{ data.take_at }}
      %td
        # {{Streit|Name des benutzerdefinierten Vorlagenfilters}}
        {{ data.media_number | transrate_media_number }}

Das ist es.

Recommended Posts

So implementieren Sie Rails-Helfer-ähnliche Funktionen in Django
Implementieren Sie die Follow-Funktion in Django
Wie man CSS in Django reflektiert
So löschen Sie abgelaufene Sitzungen in Django
So implementieren Sie einen verschachtelten Serializer mit drf-flex-Feldern
So führen Sie vom Server gesendete Ereignisse in Django durch
So implementieren Sie Shared Memory in Python (mmap.mmap)
So reflektieren Sie ImageField in Django + Docker (Kissen)
So implementieren Sie eine Verlaufsauswahl in Houdini
So implementieren Sie "named_scope" von RubyOnRails mit Django
Implementieren Sie die JWT-Anmeldefunktion im Django REST-Framework
So erstellen Sie eine Rest-API in Django
So erhalten Sie mehrere Modellobjekte zufällig in Django
Verwendung von Bootstrap in der generischen Klassenansicht von Django
Hochladen von Dateien in der generischen Klassenansicht von Django
Wie man Decorator in Django benutzt und wie man es macht
So verweisen Sie auf statische Dateien in einem Django-Projekt
Wie man in Python entwickelt
So schreiben Sie eine benutzerdefinierte Validierung in Django REST Framework
Verwendung von Laravel-ähnlichem ORM / Query Builder Orator mit Django
So überprüfen Sie das Verhalten von ORM mit einer Datei mit django
So aktualisieren Sie Benutzerinformationen bei der Django RemoteUserMiddleware-Anmeldung
So implementieren Sie vorläufig einen Fortschrittsbalken in einer Skriptsprache
[Django] Wie man Eingabewerte im Voraus mit ModelForm angibt
So generieren Sie eine Abfrage mit dem IN-Operator in Django
So implementieren Sie Python EXE für Windows mit Docker-Container
Wie man in Django die angezeigte lange Zeichenkette in der Mitte abkürzt ....
[Python] Wie man PCA mit Python macht
Umgang mit Sitzungen in SQLAlchemy
[Rails] So zeigen Sie Google Map an
[Django] So testen Sie Form [TDD]
Verwendung von Klassen in Theano
Wie man nüchtern mit Pandas schreibt
So sammeln Sie Bilder in Python
Fehler im Zusammenhang mit Memcached in Django
So aktualisieren Sie Spyder in Anaconda
Verwendung von SQLite in Python
So konvertieren Sie 0,5 in 1056964608 auf einmal
Wie fange ich mit Django an?
Wie man Prozesse in großen Mengen abbricht
Wie man MySQL mit Python benutzt
So verpacken Sie C in Python
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Wie schreibe ich Django1.9 umweltunabhängig wsgi.py
So führen Sie TensorFlow 1.0-Code in 2.0 aus
Umgang mit Japanisch mit Python
So melden Sie sich bei Docker + NGINX an
So rufen Sie PyTorch in Julia an
[Für Anfänger] So implementieren Sie O'reilly-Beispielcode in Google Colab
So implementieren Sie Java-Code im Hintergrund von Red Hat (Linux ONE)
[Django] Lesen von Variablen / Konstanten, die in einer externen Datei definiert sind
So stellen Sie eine Django-App in nur 5 Minuten für Heroku bereit
So führen Sie eine arithmetische Verarbeitung mit der Django-Vorlage durch
Ich habe versucht, PLSA in Python zu implementieren