Django で MariaDB のテーブルを表示

次のような表示を作成する方法です。
![django_jan2101.png](https://qiita-image-store.s3.amazonaws.com/0/179446/38015304-b96d-d235-b9d4-7306a6c88577.png)


この時のデータベースの状態は、

```text
MariaDB [django_city]> select * from input_aa_city;
+----+-------+--------+------------+------------+
| id | key   | name   | population | date_mod   |
+----+-------+--------+------------+------------+
|  1 | t0901 | 下野   |      99999 | 2011-03-20 |
|  2 | t0902 | 小山   |      88888 | 2015-04-09 |
|  3 | t0903 | 足利   |      67321 | 2009-08-02 |
+----+-------+--------+------------+------------+
3 rows in set (0.000 sec)
```

1) アプリの作成

```bash
python manage.py startapp city
```

2) フォルダーの作成

```bash
mkdir city/static
mkdir city/static/city
mkdir city/static/city/css
mkdir city/templates
mkdir city/templates/city
```

ツリーの構造

```text
$ tree city -I '_*'
city
├── admin.py
├── apps.py
├── migrations
│   ├── 0001_initial.py
│   └── 0002_auto_20190121_0443.py
├── models.py
├── static
│   └── input_aa
│       └── css
│           └── input_aa.css
├── templates
│   └── input_aa
│       └── index.html
├── tests.py
├── urls.py
└── views.py
```

3) city/models.py

```py:city/models.py
from django.db import models

class City(models.Model):
    key = models.CharField(max_length=10)
    name = models.CharField(max_length=20)
    population = models.IntegerField(default=0)
    date_mod = models.DateField()

    def __str__(self):
        return '<Friend:id=' + str(self.id) + ', ' + \
            self.key + ', ' + self.name + '>'
```

4) city/views.py

```py:city/views.py
from django.shortcuts import render

from django.http import HttpResponse
from .models import City

def index(request):
	data = City.objects.all()
	params = {
			'title': 'Cities',
			'message': 'All Cities.',
			'data': data,
		}

	return render(request,'city/index.html',params)
```

5) city/urls.py

```py:city/urls.py
from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
```

6) city/admin.py

```py:city/admin.py
from django.contrib import admin
from .models import City
admin.site.register(City)
```

7) city/templates/city/index.html

```html:city/templates/city/index.html
{% load static %}
<!doctype html>
<html lang="ja">
<head>
<link rel="stylesheet"
 href="{% static 'city/css/city.css' %}">
<title>{{ title }}</title>
</head>
<body>
<p>{{message|safe}}</p>
<table>
<tr>
	<th>key</th>
	<th>name</th>
	<th>population</th>
	<th>date_mod</th>
</tr>
{% for item in data %}
<tr>
	<td>{{item.key}}</td>
	<td>{{item.name}}</td>
	<td>{{item.population}}</td>
	<td>{{item.date_mod}}</td>
</tr>
{% endfor %}
</table>
<hr />
Jan/21/2019 PM 13:47<p />
</body>
</html>
```

8) city/static/city/css/city.css

```css:city/static/city/css/city.css
/* -------------------------------------------------------------- */
/*

	city.css

						Jan/21/2019

*/
/* -------------------------------------------------------------- */
table {
  margin: 10px;
	font-size: 14pt;
}

table tr th {
	backqround-color: #009;
	color: green;
	padding: 2px 10px;
	border-width: 2px;
	border:1.5px #7e7e7e solid;
}

table tr td {
	backqround-color: #eee;
	color: #666;
	padding: 2px 10px;
	border-width: 2px;
	border:1.5px #7e7e7e solid;
}


/* -------------------------------------------------------------- */
```

9) プロジェクトの　settings.py と urls.py を編集

```py:プロジェクト名/settings.py
（省略）
INSTALLED_APPS = [
    'city',
（省略）
 ```

```py:プロジェクト名/urls.py
（省略）
urlpatterns = [
    path('', include('city.urls')),
（省略）
```
（省略）

10) マイグレーション

```bash
python manage.py makemigrations city
python manage.py migrate
```

11) テーブルにデータを入れる

開発サーバーを起動して、admin でログインする。
![city_jan2102.png](https://qiita-image-store.s3.amazonaws.com/0/179446/47cc8133-cdcf-5bed-563d-6e8cabf7c681.png)


参考記事
[Django で MariaDB を使う](https://qiita.com/ekzemplaro/items/b0140f16a780c689b890)