Using mdgen in your projects¶
Initially this project was conceived since I needed to populate my django models with fake data. Here’s implementation using both django and flask.
Implementation in django¶
We will create a management command
which will let us create a model instance using python manage.py
createdata
and insert fake markdown data into it.
my_app/models.py
from django.db import models
class MarkdownPost(models.Model):
text = models.TextField()
created_on = models.DateTimeField(auto_add_now=True)
my_app/management/createdata.py
from django.core.management.base import BaseCommand
from my_app.models import MarkdownPost
from mdgen import MarkdownPostProvider
fake = Faker()
fake.add_provider(MarkdownPostProvider)
class Command(BaseCommand):
def handle(self, *args, **options):
MarkdownPost.objects.create(
text = fake.post()
)
You can then invoke this command using python manage.py
createdata
.
Implementation in flask¶
in app.py
from flask import Flask
from mdgen import MarkdownPostProvider
from faker import Faker
import markdown.extensions.fenced_code
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(80), nullable=False)
body = db.Column(db.Text, nullable=False)
pub_date = db.Column(db.DateTime, nullable=False,
default=datetime.utcnow)
@app.route('/')
def index():
fake = Faker()
fake.add_provider(MarkdownPostProvider)
text = fake.post()
marked_down_text = markdown.markdown(text, extensions=["fenced_code"])
p = Post(title=marked_down_text)
return p
if __name__ == '__main__':
app.run()