__init __ () принимает 1 позиционный аргумент, но 2 были заданы при добавлении поддержки латекса к уценке - PullRequest
0 голосов
/ 11 февраля 2020

Я следую этому учебнику , чтобы добавить поддержку LaTeX в уценку, и получаю эту ошибку:

Среда:

Метод запроса: запрос GET URL: http://localhost/posts/ttttt/

Django Версия: 2.2.10 Python Версия: 3.7.3 Установленные приложения: ['home', 'search', 'info', ' list ',' streams ',' post ',' faq ',' registration ',' snippet ',' wagtailmd ',' wagtailcodeblock ',' wagtail.contrib.forms ',' wagtail.contrib.redirects ',' wagtail. embeds »,« wagtail.sites »,« wagtail.users »,« wagtail.snippets »,« wagtail.documents »,« wagtail.images »,« wagtail.search »,« wagtail.admin »,« wagtail.core » , 'wagtail.contrib.modeladmin', 'wagtail.contrib.styleguide', 'modelcluster', 'tag git', 'django .contrib.admin', 'django .contrib.auth', 'django .contrib.contenttypes ',' django .contrib.sessions ',' django .contrib.messages ',' django .contrib.staticfiles ',' django .contrib.sites ',' django .contrib.humanize ',' allauth ',' allauth.account ',' allauth.socialaccount ',' crispy_forms ',' wagtailmen us ',' captcha ',' wagtailcaptcha '] Установленное промежуточное ПО: [' django .contrib.sessions.middleware.SessionMiddleware ',' django .middleware.common.CommonMiddleware ',' django .middleware.csrf. CsrfViewMiddleware ',' django .contrib.auth.middleware.AuthenticationMiddleware ',' django .contrib.messages.middleware.MessageMiddleware ',' django .middleware.clickjacking.XFrameOptionsMiddleware '. * * 110idm. security.SecurityMiddleware ',' wagtail.core.middleware.SiteMiddleware ',' wagtail.contrib.redirects.middleware.RedirectMiddleware ']

Ошибка шаблона: В шаблоне C: \ Users \ abdom \ OneDrive \ Desktop \ project \ website \ templates \ base. html, ошибка в строке 0 init () принимает 1 позиционный аргумент, но задано 2 1: {% load stati c wagtailuserbar%} 2: {% загрузить menu_tags%} 3: 4: 5: 6:
7: 8: 9: {% block title%} 10: {% if self.seo_title%} {{self.seo_title}} {% else%} { {self.title}} {% endif%}

Трассировка:

Файл "C: \ Users \ abdom \ OneDrive \ Des ktop \ project.venv \ lib \ site-packages \ django \ core \ handlers \ exception.py "во внутреннем 34. response = get_response (запрос)

файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ wagtail \ core \ models.py "в _get_response 1254. response = response.render ()

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ response.py "в визуализации 106. self.content = self.rendered_content

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ response.py "в rendered_content 83. content = template.render (context, self._request)

File" C: \ Пользователи \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ backends \ django .py "в рендере 61. вернуть self.template.render (context)

файл «C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py» в рендере 171. вернуть self._render (context)

File «C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в _render 163. вернуть self.nodelist.render (context)

File" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в визуализации 937. bit = node.render_annotated (context)

Файл" C: \ Пользователи \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в render_annotated 904. вернуть self.render (context)

File" C: \ Пользователи \ abdom \ OneDrive \ Desktop \ проект. venv \ lib \ site-packages \ django \ template \ loader_tags.py "в рендере 150. вернуть compiled_parent._render (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project. venv \ lib \ site-packages \ django \ template \ base.py "в _render 163. вернуть self.nodelist.render (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в визуализации 937. bit = node.render_annotated (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в render_annotated 904. вернуть self.render (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ loader_tags.py "в рендере 62. result = block.nodelist.render (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в рендере 937. bit = node.render_annotated (context)

File" C: \ Users \ abdom \ OneDrive \ Desktop \ project.v env \ lib \ site-packages \ django \ template \ base.py "в render_annotated 904. вернуть self.render (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project. venv \ lib \ site-packages \ django \ template \ base.py "в рендере 987. output = self.filter_expression.resolve (context)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ django \ template \ base.py "в разрешении 698. new_obj = fun c (obj, * arg_vals)

File" C: \ Users \ abdom \ OneDrive \ Desktop \ project \ wagtailmd \ templatetags \ wagtailmd.py "в markdown_filter 14. output_format = 'html5'

File" C: \ Users \ abdom \ OneDrive \ Desktop \ project. venv \ lib \ site-packages \ markdown \ core.py "в уценке 387. md = Markdown (** kwargs)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ markdown \ core.py "в init 97. configs = kwargs.get ('extension_configs', {}))

File" C: \ Пользователи \ abdom \ OneDrive \ Desktop \ project.venv \ Lib \ сайт-пакеты \ уценки \ кор e.py "в registerExtensions 123. ext = self.build_extension (ext, configs.get (ext, {}))

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project.venv \ lib \ site-packages \ markdown \ core.py "в build_extension 178. вернуть module.makeExtension (** configs)

Файл" C: \ Users \ abdom \ OneDrive \ Desktop \ project \ wagtailmd \ mdx \ mdx_mathjax.py "в makeExtension 23. return MathJaxExtension (configs)

Тип исключения: TypeError at / posts / ttttt / Exception Значение: init () принимает 1 позиционный аргумент, но 2 было дано

mdx_mathjax.py:

import markdown
import cgi

class MathJaxPattern(markdown.inlinepatterns.Pattern):
    def __init__(self, md):
        markdown.inlinepatterns.Pattern.__init__(
            self, r'(?<!\\)(\$\$?)(.+?)\2', md)

    def handleMatch(self, m):
        # Pass the math code through, unmodified except for basic entity 
        # substitutions. 
        # Stored in htmlStash so it doesn't get further processed by Markdown.
        text = cgi.escape(m.group(2) + m.group(3) + m.group(2))
        return self.markdown.htmlStash.store(text)

class MathJaxExtension(markdown.Extension):
    def extendMarkdown(self, md, md_globals):
        # Needs to come before escape matching because \ is pretty important
        # in LaTeX
        md.inlinePatterns.add('mathjax', MathJaxPattern(md), '<escape')

def makeExtension(configs=[]):
    return MathJaxExtension(configs)

wagtailmd.py:

import markdown
from django import template

register = template.Library()

@register.filter(name='markdown')
def markdown_filter(value):
    return markdown.markdown(
    value,
    extensions=[
        'wagtailmd.mdx.mdx_mathjax',
    ],
    output_format='html5'
)

моей записи. html

{% extends 'base.html' %}
{% load static %}

{% load wagtailcore_tags wagtailimages_tags wagtailmd %}


{% block content %}

<!-- main -->

<main>
    <div class="uk-container uk-container-small" style="margin: 0 auto;">

        <article>
            <div class="math-editor">
                {{ self.math_editor|markdown|safe }}
            </div>
        </article>
    </div>
</main>

<!-- /main -->

{% endblock content %}

{% block extra_js %}
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      extensions: ["tex2jax.js"],
      jax: ["input/TeX", "output/HTML-CSS"],
      tex2jax: {
        inlineMath: [['$','$']],
        displayMath: [['$$','$$']] ,
        processEscapes: true
      },
      "HTML-CSS": { availableFonts: ["TeX"] }
    });
  </script>

  <script type="text/javascript"
     src="//cdn.mathjax.org/mathjax/latest/MathJax.js">
  </script>
{% endblock %}

спасибо.

1 Ответ

1 голос
/ 11 февраля 2020

В вашем коде есть ошибка реализации. В соответствии с markdown документацией , вы должны определить, какие параметры вы хотите предоставить своему пользовательскому Extension.

. Если у вас еще нет конфигураций, вам следует использовать что-то вроде ниже:

def makeExtension(configs={}):
    return MathJaxExtension(**configs)

Полная реализация должна выглядеть примерно так:

import markdown
import cgi

class MathJaxPattern(markdown.inlinepatterns.Pattern):
    def __init__(self, md):
        markdown.inlinepatterns.Pattern.__init__(
            self, r'(?<!\\)(\$\$?)(.+?)\2', md)

    def handleMatch(self, m):
        # Pass the math code through, unmodified except for basic entity 
        # substitutions. 
        # Stored in htmlStash so it doesn't get further processed by Markdown.
        text = cgi.escape(m.group(2) + m.group(3) + m.group(2))
        return self.markdown.htmlStash.store(text)

class MathJaxExtension(markdown.Extension):
    def __init__(self, **kwargs):
        self.config = {'option1' : ['value1', 'description1'],
                       'option2' : ['value2', 'description2'] }
        super(MathJaxExtension, self).__init__(**kwargs)

    def extendMarkdown(self, md, md_globals):
        # Needs to come before escape matching because \ is pretty important
        # in LaTeX
        md.inlinePatterns.add('mathjax', MathJaxPattern(md), '<escape')

def makeExtension(configs={}):
    return MathJaxExtension(**configs)

...