我无法理解 django-markdownx 的用法
I can't understand the django-markdownx's usage
有点尴尬。但我似乎无法理解 django-markdownx 关于如何使用该应用程序的文档。我遵循了 入门 指南,安装了应用程序和依赖项,添加了 jquery 并且它在管理后端中运行。但是模板不会将 text = MarkdownxField()
呈现为格式正确的降价,而是呈现为纯文本。
我不明白这部分...然后,使用 {{ form.media }}
:
在模板中包含表单所需的媒体
<form method="POST" action="">{% csrf_token %}
{{ form }}
</form>
{{ form.media }}
我试图在模板中的文章标签之前添加该代码。
{% extends "base.html" %}
{% block content %}
<form method="POST" action="">{% csrf_token %}
{{ form }}
</form>
{{ form.media }}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.text }}</p>
<div>{{ article.pub_date }} {{ article.category }} {{ article.tag }}</div>
</article>
{% endblock %}
但这并不能解决问题。
我错过了什么?我知道这是微不足道的。但是我对表格没有经验。
app/models.py
from django.db import models
from django.urls import reverse
from markdownx.models import MarkdownxField
class Article(models.Model):
title = models.CharField(max_length=250, verbose_name='title')
text = MarkdownxField()
pub_date = models.DateField(verbose_name='udgivelsesdato')
category = models.ForeignKey(Category, verbose_name='kategori', null=True)
tag = models.ForeignKey(Tag, verbose_name='mærke', null=True)
def get_absolute_url(self):
return reverse('article-detail', kwargs={'pk': self.pk})
def __str__(self):
return self.title
class Meta():
verbose_name = 'artikel'
verbose_name_plural = 'artikler'
settings.py
INSTALLED_APPS = [
***
'markdownx',
'articles',
]
# Markdown extensions
MARKDOWNX_MARKDOWN_EXTENSIONS = [
'markdown.extensions.sane_lists',
'markdown.extensions.nl2br',
'markdown.extensions.extra',
]
urls.conf
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^', include('articles.urls')),
url(r'^markdownx/', include('markdownx.urls')),
url(r'^admin/', admin.site.urls),
]
app/urls.py
from django.conf.urls import url
from django.views.generic.dates import ArchiveIndexView
from articles.models import Article
from articles.views import ArticleDetailView, ArticleListView
urlpatterns = [
url(r'^arkiv/$',
ArchiveIndexView.as_view(model=Article, date_field="pub_date"),
name="article_archive"),
url(r'^$', ArticleListView.as_view(), name='article_list'),
url(r'(?P<pk>\d+)/$', ArticleDetailView.as_view(), name='article_detail'),
]
app/templates/app/article_list.html
{% extends "base.html" %}
{% block content %}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.text }}</p>
<div>{{ article.pub_date }}</div>
</article>
{% endblock %}
app/views.py
from django.views.generic import ListView, DetailView
from articles.models import Article
class ArticleListView(ListView):
model = Article
class ArticleDetailView(DetailView):
model = Article
好的,我现在看到你的问题了(感谢你处理我的问题:))。 django-markdownx 使您能够在表单中使用 Markdown 编辑器。但是,当在模板中显示时,它不会格式化该降价 - 它只是纯文本。
根据 this issue on the project's GitHub,您需要在您的视图中呈现降价,然后将其传递给您的模板。另一种方法,如果我在项目中使用它,我更喜欢这种方法:
from markdownx.utils import markdownify
class Article(models.Model):
title = models.CharField(max_length=250, verbose_name='title')
text = MarkdownxField()
pub_date = models.DateField(verbose_name='udgivelsesdato')
category = models.ForeignKey(Category, verbose_name='kategori', null=True)
tag = models.ForeignKey(Tag, verbose_name='mærke', null=True)
# Create a property that returns the markdown instead
@property
def formatted_markdown(self):
return markdownify(self.text)
def get_absolute_url(self):
return reverse('article-detail', kwargs={'pk': self.pk})
def __str__(self):
return self.title
class Meta():
verbose_name = 'artikel'
verbose_name_plural = 'artikler'
然后在您的模板中:
{% extends "base.html" %}
{% block content %}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.formatted_markdown|safe }}</p>
<div>{{ article.pub_date }}</div>
</article>
{% endblock %}
另一种方式,根据需要使用模板标签:
from django import template
from django.utils.safestring import mark_safe
from markdownx.utils import markdownify
register = template.Library()
@register.filter
def formatted_markdown(text):
return mark_safe(markdownify(text))
并像
一样使用它
{{ article.text|formatted_markdown }}
有点尴尬。但我似乎无法理解 django-markdownx 关于如何使用该应用程序的文档。我遵循了 入门 指南,安装了应用程序和依赖项,添加了 jquery 并且它在管理后端中运行。但是模板不会将 text = MarkdownxField()
呈现为格式正确的降价,而是呈现为纯文本。
我不明白这部分...然后,使用 {{ form.media }}
:
<form method="POST" action="">{% csrf_token %}
{{ form }}
</form>
{{ form.media }}
我试图在模板中的文章标签之前添加该代码。
{% extends "base.html" %}
{% block content %}
<form method="POST" action="">{% csrf_token %}
{{ form }}
</form>
{{ form.media }}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.text }}</p>
<div>{{ article.pub_date }} {{ article.category }} {{ article.tag }}</div>
</article>
{% endblock %}
但这并不能解决问题。
我错过了什么?我知道这是微不足道的。但是我对表格没有经验。
app/models.py
from django.db import models
from django.urls import reverse
from markdownx.models import MarkdownxField
class Article(models.Model):
title = models.CharField(max_length=250, verbose_name='title')
text = MarkdownxField()
pub_date = models.DateField(verbose_name='udgivelsesdato')
category = models.ForeignKey(Category, verbose_name='kategori', null=True)
tag = models.ForeignKey(Tag, verbose_name='mærke', null=True)
def get_absolute_url(self):
return reverse('article-detail', kwargs={'pk': self.pk})
def __str__(self):
return self.title
class Meta():
verbose_name = 'artikel'
verbose_name_plural = 'artikler'
settings.py
INSTALLED_APPS = [
***
'markdownx',
'articles',
]
# Markdown extensions
MARKDOWNX_MARKDOWN_EXTENSIONS = [
'markdown.extensions.sane_lists',
'markdown.extensions.nl2br',
'markdown.extensions.extra',
]
urls.conf
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^', include('articles.urls')),
url(r'^markdownx/', include('markdownx.urls')),
url(r'^admin/', admin.site.urls),
]
app/urls.py
from django.conf.urls import url
from django.views.generic.dates import ArchiveIndexView
from articles.models import Article
from articles.views import ArticleDetailView, ArticleListView
urlpatterns = [
url(r'^arkiv/$',
ArchiveIndexView.as_view(model=Article, date_field="pub_date"),
name="article_archive"),
url(r'^$', ArticleListView.as_view(), name='article_list'),
url(r'(?P<pk>\d+)/$', ArticleDetailView.as_view(), name='article_detail'),
]
app/templates/app/article_list.html
{% extends "base.html" %}
{% block content %}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.text }}</p>
<div>{{ article.pub_date }}</div>
</article>
{% endblock %}
app/views.py
from django.views.generic import ListView, DetailView
from articles.models import Article
class ArticleListView(ListView):
model = Article
class ArticleDetailView(DetailView):
model = Article
好的,我现在看到你的问题了(感谢你处理我的问题:))。 django-markdownx 使您能够在表单中使用 Markdown 编辑器。但是,当在模板中显示时,它不会格式化该降价 - 它只是纯文本。
根据 this issue on the project's GitHub,您需要在您的视图中呈现降价,然后将其传递给您的模板。另一种方法,如果我在项目中使用它,我更喜欢这种方法:
from markdownx.utils import markdownify
class Article(models.Model):
title = models.CharField(max_length=250, verbose_name='title')
text = MarkdownxField()
pub_date = models.DateField(verbose_name='udgivelsesdato')
category = models.ForeignKey(Category, verbose_name='kategori', null=True)
tag = models.ForeignKey(Tag, verbose_name='mærke', null=True)
# Create a property that returns the markdown instead
@property
def formatted_markdown(self):
return markdownify(self.text)
def get_absolute_url(self):
return reverse('article-detail', kwargs={'pk': self.pk})
def __str__(self):
return self.title
class Meta():
verbose_name = 'artikel'
verbose_name_plural = 'artikler'
然后在您的模板中:
{% extends "base.html" %}
{% block content %}
<article>
<h1>{{ article.title }}</h1>
<p>{{ article.formatted_markdown|safe }}</p>
<div>{{ article.pub_date }}</div>
</article>
{% endblock %}
另一种方式,根据需要使用模板标签:
from django import template
from django.utils.safestring import mark_safe
from markdownx.utils import markdownify
register = template.Library()
@register.filter
def formatted_markdown(text):
return mark_safe(markdownify(text))
并像
一样使用它{{ article.text|formatted_markdown }}