Skip to content

Commit d8e6408

Browse files
authored
Merge branch 'master' into python-double-underscore
2 parents 69838d2 + b838b47 commit d8e6408

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+2369
-0
lines changed

django-markdown/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# How to Render Markdown in a Django Application
2+
3+
This folder provides the code examples for the Real Python tutorial [How to Render Markdown in a Django Application](https://realpython.com/django-markdown/).

django-markdown/dmd_app/__init__.py

Whitespace-only changes.

django-markdown/dmd_app/admin.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from django.contrib import admin
2+
3+
from .models import MarkdownContent
4+
5+
6+
class MarkdownContentAdmin(admin.ModelAdmin):
7+
prepopulated_fields = {"slug": ["title"]}
8+
9+
10+
admin.site.register(MarkdownContent, MarkdownContentAdmin)

django-markdown/dmd_app/apps.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.apps import AppConfig
2+
3+
4+
class DjangoMarkdownAppConfig(AppConfig):
5+
default_auto_field = "django.db.models.BigAutoField"
6+
name = "dmd_app"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import markdown
2+
from django.urls import reverse
3+
from markdown.inlinepatterns import LINK_RE, LinkInlineProcessor
4+
5+
6+
class SlugFieldLinkInlineProcessor(LinkInlineProcessor):
7+
def getLink(self, data, index):
8+
href, title, index, handled = super().getLink(data, index)
9+
if href.startswith("slug"):
10+
slug = href.split(":")[1]
11+
relative_url = reverse("markdown-content", args=[slug])
12+
href = relative_url
13+
return href, title, index, handled
14+
15+
16+
class SlugFieldExtension(markdown.Extension):
17+
def extendMarkdown(self, md, *args, **kwargs):
18+
md.inlinePatterns.register(
19+
SlugFieldLinkInlineProcessor(LINK_RE, md), "link", 160
20+
)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Generated by Django 4.2.6 on 2023-10-23 20:18
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = []
11+
12+
operations = [
13+
migrations.CreateModel(
14+
name="MarkdownContent",
15+
fields=[
16+
(
17+
"id",
18+
models.BigAutoField(
19+
auto_created=True,
20+
primary_key=True,
21+
serialize=False,
22+
verbose_name="ID",
23+
),
24+
),
25+
("title", models.CharField(max_length=100)),
26+
("content", models.TextField()),
27+
],
28+
options={
29+
"verbose_name_plural": "Markdown content",
30+
},
31+
),
32+
]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Generated by Django 4.2.6 on 2023-10-23 20:36
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("dmd_app", "0001_initial"),
9+
]
10+
11+
operations = [
12+
migrations.AddField(
13+
model_name="markdowncontent",
14+
name="slug",
15+
field=models.SlugField(blank=True),
16+
),
17+
]

django-markdown/dmd_app/migrations/__init__.py

Whitespace-only changes.

django-markdown/dmd_app/models.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from django.db import models
2+
3+
4+
class MarkdownContent(models.Model):
5+
title = models.CharField(max_length=100)
6+
content = models.TextField()
7+
slug = models.SlugField(blank=True)
8+
9+
class Meta:
10+
verbose_name_plural = "Markdown content"
11+
12+
def __str__(self):
13+
return self.title
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
pre { line-height: 125%; }
2+
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
3+
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
4+
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
5+
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
6+
.codehilite .hll { background-color: #ffffcc }
7+
.codehilite { background: #f8f8f8; }
8+
.codehilite .c { color: #3D7B7B; font-style: italic } /* Comment */
9+
.codehilite .err { border: 1px solid #FF0000 } /* Error */
10+
.codehilite .k { color: #008000; font-weight: bold } /* Keyword */
11+
.codehilite .o { color: #666666 } /* Operator */
12+
.codehilite .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */
13+
.codehilite .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */
14+
.codehilite .cp { color: #9C6500 } /* Comment.Preproc */
15+
.codehilite .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */
16+
.codehilite .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */
17+
.codehilite .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */
18+
.codehilite .gd { color: #A00000 } /* Generic.Deleted */
19+
.codehilite .ge { font-style: italic } /* Generic.Emph */
20+
.codehilite .gr { color: #E40000 } /* Generic.Error */
21+
.codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */
22+
.codehilite .gi { color: #008400 } /* Generic.Inserted */
23+
.codehilite .go { color: #717171 } /* Generic.Output */
24+
.codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
25+
.codehilite .gs { font-weight: bold } /* Generic.Strong */
26+
.codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
27+
.codehilite .gt { color: #0044DD } /* Generic.Traceback */
28+
.codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
29+
.codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
30+
.codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
31+
.codehilite .kp { color: #008000 } /* Keyword.Pseudo */
32+
.codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
33+
.codehilite .kt { color: #B00040 } /* Keyword.Type */
34+
.codehilite .m { color: #666666 } /* Literal.Number */
35+
.codehilite .s { color: #BA2121 } /* Literal.String */
36+
.codehilite .na { color: #687822 } /* Name.Attribute */
37+
.codehilite .nb { color: #008000 } /* Name.Builtin */
38+
.codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */
39+
.codehilite .no { color: #880000 } /* Name.Constant */
40+
.codehilite .nd { color: #AA22FF } /* Name.Decorator */
41+
.codehilite .ni { color: #717171; font-weight: bold } /* Name.Entity */
42+
.codehilite .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */
43+
.codehilite .nf { color: #0000FF } /* Name.Function */
44+
.codehilite .nl { color: #767600 } /* Name.Label */
45+
.codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
46+
.codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */
47+
.codehilite .nv { color: #19177C } /* Name.Variable */
48+
.codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
49+
.codehilite .w { color: #bbbbbb } /* Text.Whitespace */
50+
.codehilite .mb { color: #666666 } /* Literal.Number.Bin */
51+
.codehilite .mf { color: #666666 } /* Literal.Number.Float */
52+
.codehilite .mh { color: #666666 } /* Literal.Number.Hex */
53+
.codehilite .mi { color: #666666 } /* Literal.Number.Integer */
54+
.codehilite .mo { color: #666666 } /* Literal.Number.Oct */
55+
.codehilite .sa { color: #BA2121 } /* Literal.String.Affix */
56+
.codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */
57+
.codehilite .sc { color: #BA2121 } /* Literal.String.Char */
58+
.codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */
59+
.codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
60+
.codehilite .s2 { color: #BA2121 } /* Literal.String.Double */
61+
.codehilite .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */
62+
.codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */
63+
.codehilite .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */
64+
.codehilite .sx { color: #008000 } /* Literal.String.Other */
65+
.codehilite .sr { color: #A45A77 } /* Literal.String.Regex */
66+
.codehilite .s1 { color: #BA2121 } /* Literal.String.Single */
67+
.codehilite .ss { color: #19177C } /* Literal.String.Symbol */
68+
.codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */
69+
.codehilite .fm { color: #0000FF } /* Name.Function.Magic */
70+
.codehilite .vc { color: #19177C } /* Name.Variable.Class */
71+
.codehilite .vg { color: #19177C } /* Name.Variable.Global */
72+
.codehilite .vi { color: #19177C } /* Name.Variable.Instance */
73+
.codehilite .vm { color: #19177C } /* Name.Variable.Magic */
74+
.codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */

0 commit comments

Comments
 (0)