Skip to content

Instantly share code, notes, and snippets.

@joshteng
Forked from seanbehan/app.py
Created March 30, 2020 10:02
Show Gist options
  • Save joshteng/a331633cc7122e41668f0b090ef068eb to your computer and use it in GitHub Desktop.
Save joshteng/a331633cc7122e41668f0b090ef068eb to your computer and use it in GitHub Desktop.
Flask with Django ORM
'''
Run the following commands (bc. gists don't allow directories)
pip install flask django dj-database-url psycopg2
mkdir -p app/migrations
touch app/__init__.py app/migrations/__init__.py
mv models.py app/
python manage.py makemigrations
python manage.py migrate
DJANGO_SETTINGS_MODULE=settings python app.py
visit http://localhost:5000
See https://docs.djangoproject.com/en/1.11/topics/settings/#either-configure-or-django-settings-module-is-required for documentation
'''
from flask import Flask
from django.apps import apps
from django.conf import settings
apps.populate(settings.INSTALLED_APPS)
from app.models import Hit
app = Flask(__name__)
@app.route("/")
def index():
return str(Hit.objects.count())
if __name__=='__main__':
app.run(debug=True)
#!/usr/bin/env python
import os, sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
from django.db import models
from django.contrib.postgres.fields import JSONField
class BaseModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)
def attributes(self):
return self.__dict__
class Meta:
abstract = True
class Hit(BaseModel):
data = JSONField(null=True)
import dj_database_url
DATABASES = { 'default': dj_database_url.config(default='postgres://localhost/py_example_app') }
INSTALLED_APPS = ( 'app', )
SECRET_KEY = 'REPLACE_ME'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment