[PYTHON] Verwenden Sie Djangos Markdownx außerhalb des Site-Stamms

Django verwendet ein Paket namens Markdownx, um in Markdown-Notation geschriebene Quellen mit Vorschau zu debuggen. Das ist ziemlich praktisch, aber Markdownx funktioniert nicht, wenn Ihr Django-Projekt außerhalb des Site-Stamms bereitgestellt wird.

Zum Beispiel

apache2.conf


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

Wenn es so aussieht, lautet die Markdownx-URL Es ist ein Problem, wenn es nicht wie "/ prefix / markdownx / markdownify" aussieht, aber da der Markdownx-Code den Code verwendet, der mit einem festen Wert in "markdownx / settings.py" geschrieben wurde, "/ markdownx" Der Versuch, auf / markdownifyzuzugreifen, führt zu404`.

Um dies zu vermeiden, gehen Sie wie folgt vor.

  1. Geben Sie den Namespace in markdownx an, der im Projekt urls.py enthalten ist (nennen wir ihn markdownx).
  2. Schreiben Sie den URL-Teil von attrs.update in markdownx / widgets.py` mit reverse () neu

In der Erklärung von Markdownx, die bei der Suche hängen bleibt, gibt es einige, die keinen Namespace in "urlpatterns" angeben. Geben Sie daher den Namespace wie folgt an.

settings.py


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

Als nächstes markdownx / widgets.py (in den Site-Paketen jeder Umgebung), aber das Original ist wie folgt. (Wenn Sie sagen, wo es ist, ist es ein klassischer Fund. sudo find / -name 'widgets.py' | grep markdownx Lass es uns finden bei. settings.py ist auch da. )

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
})

Großbuchstabenvariablen werden in markdownx / settings.py als Konstanten definiert und am Anfang von widgets.py importiert. Schreiben Sie von diesen die beiden, die mit "_URLS_PATH" enden, wie folgt um.

widgets.py(Nach der Modifikation)


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
})

Jetzt können Sie Markdownx auch dann verwenden, wenn Sie Django außer dem Site-Stammverzeichnis bereitstellen.

Nun, es gibt vielleicht nicht viele Beispiele für die Verwendung außer dem Site-Stammverzeichnis, aber dieses Mal war ich ein wenig süchtig nach der Beziehung, zusätzlich auf der vorhandenen PHP-Site bereitzustellen (dies ist das Site-Stammverzeichnis).

Recommended Posts

Verwenden Sie Djangos Markdownx außerhalb des Site-Stamms
Bequeme Verwendung von Ipython
Anmutige Verwendung von MySQLdb
LGTM außerhalb von Qiita