Django +mysql DB WEBアプリの実装
index:
参考
https://docs.djangoproject.com/ja/2.1/intro/tutorial01/
作成方法
・プロジェクトの作成
django-admin startproject mysite
django-admin が、実行できない場合は、pip パスを追加すると、実行できました。
python C:\Users\user1234\AppData\Local\Programs\Python\Python35\Lib\site-packages\django\bin\django-admin.py startproject mysite
=> プロジェクト内に、複数のアプリを
追加できそうです。
・サーバ起動方法
python manage.py runserver
=> localhost:8000 で、開きました
・アプリを、プロジェクトに追加
python manage.py startapp test1
test1 を、追加。
・DB mysql の、設定。
mysite/settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'django', 'USER': 'db_user', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '', # (デフォルトポートなら空でも可) } }
DATABASES 部分を、
db name, user, pass ,host
等を記載します
・モデルの作成
test1/models.py
from django.db import models # Create your models here. # class Book(models.Model): """書籍""" name = models.CharField('書籍名', max_length=255) publisher = models.CharField('出版社', max_length=255, blank=True) page = models.IntegerField('ページ数', blank=True, default=0) def __str__(self): return self.name class Impression(models.Model): """感想""" book = models.ForeignKey(Book, verbose_name='書籍', related_name='impressions', on_delete=models.CASCADE) comment = models.TextField('コメント', blank=True) def __str__(self): return self.comment
・migrate
事前に、mysql DB, と上記の接続設定を
完了させておきます。
python manage.py makemigrations test1
python manage.py migrate
=> テーブルが、作成されます
・ルーティングの追加
test1/urls.py
# from django.urls import path from test1 import views app_name = 'test1' urlpatterns = [ path('', views.index, name='index'), path('book/', views.book_list, name='book_list'), # 一覧 path('book/add/' , views.book_edit, name='book_add'), # 登録 path('book/mod/<int:book_id>/', views.book_edit, name='book_mod'), # 修正 path('book/del/<int:book_id>/', views.book_del, name='book_del'), # 削除 #book_test path('book_test/', views.book_test, name='book_test'), ]
・次に、
mysite/urls.py を、追加
from django.conf.urls import url, include from django.contrib import admin from django.urls import path urlpatterns = [ path('polls/', include('polls.urls')), path('test1/', include('test1.urls')), path('admin/', admin.site.urls), ]
test1/views.py
from django.shortcuts import render, get_object_or_404, redirect from django.views.generic.list import ListView # Create your views here. from django.http import HttpResponse from django.template import loader # from test1.models import Book, Impression from test1.forms import BookForm, ImpressionForm # def index(request): return HttpResponse('Hello World ,from test1') # def book_list(request): """書籍の一覧""" # return HttpResponse('書籍の一覧') books = Book.objects.all().order_by('id') return render(request, 'test1/book_list.html', # 使用するテンプレート {'books': books}) # テンプレートに渡すデータ #
・表示の確認、
http://localhost:8000/test1/
を、開くと、追加した。ルーティングが
表示されます。
まとめ
次回は、機能を追加したいと思います