Django(PTVS)でSQLiteを用いたアプリ開発

#SQLiteとは
SQLiteの使い方について解説します。SQLiteはMySQLなどと同じリレーショナルデータベースですが、サーバとして動作させるのではなく単独のアプリケーションとして動作させることが可能です。[参照](http://www.dbonline.jp/sqlite/)
Djangoでは、デフォルト設定になっているSQLです！

#Djangoによるアプリ開発
[前回](http://qiita.com/saiyuki1919/items/6ffc9a66aa70bb9cda5a)のアプリをSQLiteに移植したいと思います。
PTVSを知らない方は[こちら](http://qiita.com/saiyuki1919/items/80c51c0045852d26399d)を参考にしてプロジェクトを作成してください！

##全体のソースコード

メインのタスク部分です！

```Python:views.py
# -*- coding: utf-8 -*-
"""
Definition of views.
"""

from django.shortcuts import render
from django.template.loader import render_to_string
from django.http import HttpResponse
from django.http import HttpRequest
from django.template import RequestContext
from datetime import datetime
from app.models import Check_list

def list_tasks(request):
    entities = Check_list.objects.all()
    html = render_to_string('app/test.html', {'entities':entities})     
    return HttpResponse(html)


def add_task(request):     
    name = request.GET['name']     
    category = request.GET['category']
    Check_list.objects.update_or_create(name=name,category=category)
    entities = Check_list.objects.all()   
    html = render_to_string('app/test.html', {'entities':entities})     
    return HttpResponse(html)


def update_task(request):   
    name = request.GET['name']     
    category = request.GET['category']
    Check_list.objects.filter(name=name,category=category).delete()           
    entities = Check_list.objects.all()
    html = render_to_string('app/test.html', {'entities':entities})     
    return HttpResponse(html)

```

URLによって関数を呼ぶ部分

```Python:urls.py
"""
Definition of urls for DjangoWebProject4.
"""

from datetime import datetime
from django.conf.urls import url
import django.contrib.auth.views

import app.forms
import app.views

# Uncomment the next lines to enable the admin:
from django.conf.urls import include
#admin
from django.contrib import admin
admin.autodiscover()

urlpatterns = [
    # Examples:
    #admin
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$',app.views.list_tasks),
    url(r'^list_tasks$',app.views.list_tasks),
    url(r'^add_task$', app.views.add_task),
    url(r'^update_task$', app.views.update_task)
]


```

データベースの設定
ここでは、Check_listというテーブルにNameとCategoryカラム設定を行なっている

```Python:models.py
"""
Definition of models.
"""

from django.db import models

# Create your models here.
class Check_list(models.Model):
    name = models.CharField('Name', max_length=255)
    category = models.CharField('Category', max_length=255, blank=True)

```

Admin画面表示に関する部分
ここで**list_display**しないとDjangoのデータベース部分に
アクセスしてもCheck_listが表示されない

```Python:admin.py
from django.contrib import admin
from app.models import Check_list


class Check_listAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'category')
    list_display_links = ('id', 'name',)
admin.site.register(Check_list, Check_listAdmin)
```

テーブルを用いた普通のHTML

```HTML:test.html
<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>     
    <body>
        <h2>My Tasks</h2> <br>     
        <table border="1">
            <tr>
                <td>Name</td>
                <td>Category</td>
                <td>Check</td>
            </tr>     
            {% for entity in entities %}     
                <form action="update_task" method="GET">
                    <tr>
                        <td>{{entity.name}} <input type="hidden" name='name' value="{{entity.name}}"></td>     
                        <td>{{entity.category}} <input type="hidden" name='category' value="{{entity.category}}"></td>   
                        <td><input type="submit" value="削除"></td> 
                    </tr>     
                </form>     
            {% endfor %}     
        </table>     
        <br>     
        <hr>    
        <table border="1">
            <form action="add_task" method="GET">
                <tr>
                    <td>Name:</td
                    ><td><input type="text" name="name"></input></td>
                </tr>     
                <tr>
                    <td>Category:</td>
                    <td><input type="text" name="category"></input></td>
                </tr>     
                <tr>
                    <td><input type="submit" value="add task"></input></td>
                </tr>     
            </form>     
        </table>     
    </body>     
</html>
```
##設定
プロジェクトを右クリックして、
**【Python】▶︎【Django Create Superuser】**
を選択する
これにより、スーパーユーザを作成し、DjangoのAdmin画面にて、ログインすることができる！

作成の際にパスワードを入力するとエラー的なのが出てるように見えるがただ、もう一度パスワードを入力してくれってことなので、スーパーユーザを作成してください

<img width="1146" alt="k１.png" src="https://qiita-image-store.s3.amazonaws.com/0/130097/bb10832c-c8f6-c91d-8603-3148fe71e360.png">

次にDatabaseの設定を反映させるために
**【Python】▶︎【Django Make Migrations】**
**【Python】▶︎【Django Make Migrate】**
をそれぞれ実行し、反映させる！また、データベースの追加や変更を行った場合も
同様に実行しないと反映されない！

<img width="1146" alt="k２.png" src="https://qiita-image-store.s3.amazonaws.com/0/130097/84d77318-1011-0fb6-59c3-5cea80751830.png">

##実行
**RUN**すると削除と追加ができるアプリが立ち上がる
また、**/admin**することでDjangoデータベースにアクセスし、GUIでテーブル内容を見ることができる！
<img width="329" alt="１.png" src="https://qiita-image-store.s3.amazonaws.com/0/130097/d69859f4-d2d1-fb3b-5f7b-32d4a015085e.png">


#デプロイ
[こちら](http://qiita.com/saiyuki1919/items/bf3f50e46482124a4f36)と同様に【Publish】から【WebApps】を選択して、Azure上にデプロイする
デプロイした後、
**【App Service】▶️【概要】▶️【URL】**
から開くことで先ほどのアプリが動作していることが確認できる

**※わざわざ、SQLのデータストレージを使う必要がなくSQLが使える！**
<img width="1169" alt="２.png" src="https://qiita-image-store.s3.amazonaws.com/0/130097/cffdec03-914e-3707-3e02-51af1b2f5cdf.png">

#終わりに
SQLiteをAzureにあげてもそのまま使えるのは驚いた！
しかし,MySQLをやってみたが結局うまくいかなかったのでそこはどうにかしたい！
詳しい人は教えてください！！