[PYTHON] Le modèle Django lit Makdown et reStructuredText écrits dans un fichier externe au format HTML

1. Vue d'ensemble

Il est difficile d'écrire des pages de document (conditions d'utilisation, FAQ, politique de confidentialité, page à propos, etc.) car elles sont en HTML, alors écrivez-les dans un fichier externe avec markdown, chargez-les dans le modèle Django (comme la balise include) et utilisez-les comme HTML. Production.

templates/myapp/about.html


{% load markup %}
{% load my_tags %}

{% read_file 'myapp/about.md' as source %}
{{ source|markdown:"safe" }}

templates/myapp/about.md


#À propos de cette application

Cette application est ...

* Django
* Python
* uwsgi

Résultat de sortie

スクリーンショット 2016-10-07 11.22.56.png

2. Méthode de réalisation

1. Installez django-markwhat

Cette fois, nous utiliserons django-markwhat (+ Markdown) comme bibliothèque principale pour le rendu. Si vous mettez celui-ci, il peut prendre en charge à la fois markdown et reStructuredText, ce qui est pratique.

python


$ pip install django-markwhat Markdown

Ajouté à INSTALLED_APPS

python


  'django_markwhat',

2. Développement de balises pour rechercher et lire des fichiers à partir du répertoire de modèles

templatetags/my_tags.py


from django import template
from django.template import TemplateDoesNotExist

register = template.Library()


@register.simple_tag(takes_context=True)
def read_file(context, template_name):
    """
Charger un fichier texte à l'aide du chargeur de modèles

Exemple: {% read_file 'admin_doc/pages/about.md' as source %}
    """

    for loader in context.template.engine.template_loaders:
        try:
            source, _path = loader.load_template_source(template_name)
            return source

        except TemplateDoesNotExist:
            pass
    else:
        raise TemplateDoesNotExist(template_name)

Comme ceci, créez une balise de modèle qui récupère le contenu du fichier à partir du répertoire de modèle en utilisant uniquement la fonction de lecture de fichier du chargeur de modèle de Django.

3. Exécuter

J'ai écrit au début,

templates/myapp/about.html


{% load markup %}
{% load my_tags %}

{% read_file 'myapp/about.md' as source %}
{{ source|markdown:"safe" }}

Le démarque est maintenant affiché en HTML.

Au fait, le Markdown de Qiita est puissant et facile à utiliser, mais ce Markdown est beaucoup plus pauvre.

Recommended Posts

Le modèle Django lit Makdown et reStructuredText écrits dans un fichier externe au format HTML
Instruction Loop For inversée dans un fichier HTML sur Django
[Django] Comment lire les variables / constantes définies dans un fichier externe
Modèle HTML Django partie 2
Modèle HTML Django
Lire les paramètres de journalisation à partir d'un fichier externe avec Flask
Django renvoie le contenu du fichier sous forme de réponse HTTP
Créer une fonction d'authentification à l'aide de django-allauth et CustomUser dans Django
Django # 2 (modèle)
Modèle HTML Django partie 2
Modèle HTML Django
Astuces pour les modèles Django
(Remarque) Ordre de recherche des fichiers modèles dans Django
Téléchargement de fichiers avec django
Enregistrement du modèle depuis Django Bootstrap
Afficher Django ManyToManyField dans un modèle
Utilisez le modèle jinja2 dans un fichier Excel
Django
Résumé des paramètres liés aux fichiers statiques (statiques) de Django
Créer un filtre avec un modèle django
modèle
Créer un téléchargeur de fichiers avec Django
Comment effectuer un traitement arithmétique avec le modèle Django
Développement d'une application WEB avec Django [modèle supplémentaire]
(Pour moi) Django_1 (Basic / Hello World / Template)
Résoudre les conflits de modèles Angural JS et Django
Ecrire brièvement if-else du template Django
Le modèle Django lit Makdown et reStructuredText écrits dans un fichier externe au format HTML