[PYTHON] Utilisez Markdownx de Django en dehors de la racine du site

Django utilise un package appelé Markdownx pour déboguer les sources écrites en notation markdown avec des aperçus. C'est assez pratique, mais Markdownx ne fonctionne pas si votre projet Django est déployé en dehors de la racine du site.

Par exemple

apache2.conf


WSGIScriptAlias /prefix /django/project/project/wsgi.py

Si cela ressemble à ceci, l'URL Markdownx est C'est un problème s'il ne ressemble pas à / prefix / markdownx / markdownify, mais puisque le code Markdownx utilise celui écrit avec une valeur fixe dans markdownx / settings.py, / markdownx Essayer d'accéder à / markdownify aboutit à "404".

Pour éviter cela, procédez comme suit.

  1. Spécifiez l'espace de noms dans markdownx include dans le projet ʻurls.py` (appelons-le markdownx)
  2. Réécrivez la partie URL de ʻattrs.update dans markdownx / widgets.py avec reverse ()

Dans l'explication de Markdownx qui est interceptée dans la recherche, il y en a qui ne spécifient pas d'espace de nom dans les ʻurl patterns`, donc spécifiez l'espace de nom comme suit.

settings.py


urlpatterns = [
    path('markdownx/', include(('markdownx.urls','markdownx'))), 
      :

Ensuite, markdownx / widgets.py (dans les packages de site de chaque environnement), mais l'original est le suivant. (Quand vous dites où il se trouve, c'est une trouvaille classique. sudo find / -name 'widgets.py' | grep markdownx Trouvons-le à. settings.py est également là. )

widgets.py(original)


attrs.update({
    'data-markdownx-editor-resizable': MARKDOWNX_EDITOR_RESIZABLE,
    'data-markdownx-urls-path': MARKDOWNX_URLS_PATH,                  
    'data-markdownx-upload-urls-path': MARKDOWNX_UPLOAD_URLS_PATH,             
    'data-markdownx-latency': MARKDOWNX_SERVER_CALL_LATENCY
})

Les variables majuscules sont définies comme des constantes dans markdownx / settings.py et sont importées au début de widgets.py. Parmi ceux-ci, réécrivez les deux se terminant par _URLS_PATH comme suit.

widgets.py(Après modification)


from django.urls import reverse
       :
attrs.update({
    'data-markdownx-editor-resizable': MARKDOWNX_EDITOR_RESIZABLE,
    'data-markdownx-urls-path': reverse('markdownx:markdownx_markdownify'),
    'data-markdownx-upload-urls-path': reverse('markdownx:markdownx_upload'),
    'data-markdownx-latency': MARKDOWNX_SERVER_CALL_LATENCY
})

Vous pouvez maintenant utiliser Markdownx même si vous déployez Django autre que la racine du site.

Eh bien, il n'y a peut-être pas beaucoup d'exemples d'utilisation autre que la racine du site, mais cette fois, j'étais un peu accro à la relation de déploiement supplémentaire sur le site PHP existant (c'est la racine du site).

Recommended Posts

Utilisez Markdownx de Django en dehors de la racine du site
Utilisation pratique d'ipython
Utilisation gracieuse de MySQLdb
LGTM en dehors de Qiita