Improve database info
Support for MySQL, include SQLite persistence warning.
This commit is contained in:
parent
a6f9284570
commit
3015a46f9a
3 changed files with 34 additions and 16 deletions
22
welcome/database.py
Normal file
22
welcome/database.py
Normal file
|
@ -0,0 +1,22 @@
|
|||
from django.conf import settings
|
||||
|
||||
|
||||
def info():
|
||||
db_settings = settings.DATABASES['default']
|
||||
if 'postgres' in db_settings['ENGINE']:
|
||||
engine = 'PostgreSQL'
|
||||
url = '{HOST}:{PORT}/{NAME}'.format(**db_settings)
|
||||
elif 'mysql' in db_settings['ENGINE']:
|
||||
engine = 'MySQL'
|
||||
url = '{HOST}:{PORT}/{NAME}'.format(**db_settings)
|
||||
elif 'sqlite' in db_settings['ENGINE']:
|
||||
engine = 'SQLite'
|
||||
url = '{NAME}'.format(**db_settings)
|
||||
else:
|
||||
engine = 'unknown'
|
||||
url = ''
|
||||
return {
|
||||
'engine': engine,
|
||||
'url': url,
|
||||
'is_sqlite': engine == 'SQLite',
|
||||
}
|
|
@ -14,6 +14,7 @@
|
|||
#explanation { background:#eee; }
|
||||
#instructions { background:#f6f6f6; }
|
||||
#instructions ol li { margin: 0.2em 0 0.2em 2em; }
|
||||
.warning { color: orange }
|
||||
</style>
|
||||
</head>
|
||||
|
||||
|
@ -51,7 +52,15 @@
|
|||
<div id="hostname">
|
||||
<p>
|
||||
Server hostname: {{ hostname }}<br>
|
||||
Database server: {{ database_info }}<br>
|
||||
Database server: {{ database.engine }} ({{ database.url }})<br>
|
||||
{% if database.is_sqlite %}
|
||||
<span class="warning">
|
||||
Data persistence warning:
|
||||
You are currently using SQLite.
|
||||
This is fine for development, but your data won't be persisted
|
||||
across application deployments.
|
||||
</span><br>
|
||||
{% endif %}
|
||||
Page views: {{ count }}
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
@ -2,30 +2,17 @@ import os
|
|||
from django.shortcuts import render
|
||||
from django.conf import settings
|
||||
|
||||
from . import database
|
||||
from .models import PageView
|
||||
|
||||
# Create your views here.
|
||||
|
||||
|
||||
def _database_info():
|
||||
db_settings = settings.DATABASES['default']
|
||||
if 'postgres' in db_settings['ENGINE']:
|
||||
engine = 'PostgreSQL'
|
||||
info = '{HOST}:{PORT}/{NAME}'.format(**db_settings)
|
||||
else:
|
||||
engine = 'SQLite'
|
||||
info = '{NAME}'.format(**db_settings)
|
||||
return '{} ({})'.format(engine, info)
|
||||
|
||||
database_info = _database_info()
|
||||
|
||||
|
||||
def index(request):
|
||||
hostname = os.getenv('HOSTNAME', 'unknown')
|
||||
PageView.objects.create(hostname=hostname)
|
||||
|
||||
return render(request, 'welcome/index.html', {
|
||||
'hostname': hostname,
|
||||
'database_info': database_info,
|
||||
'database': database.info(),
|
||||
'count': PageView.objects.count()
|
||||
})
|
||||
|
|
Loading…
Reference in a new issue