メモ
仮想環境作成
#仮想環境の名前 python3 -m venv XXX #ディレクトリに移動し仮想環境にする source XXX /bin/activate #仮想環境を閉じる deactivate #仮想環境を削除 rm -r XXX
Django プロジェクト作成~最初にすること
#プロジェクトを作成( . を付ける) django-admin startproject XXX . """ setteing.pyのDIR「BASE_DIR / 'XXX'」 manage.pyと同じ階層にXXXを作成 INSERD_APPS「XXX.apps」 urls.pyにincludeをインポート path('', include('XXX.urls')), アプリにurls.pyを作成し、上記入力したもの以外をコピー makemigrationsを実行 最期にアプリ名を指定できる python3 manage.py makemigrations migrateを実行 上の変更を反映 python3 manage.py migrate スーパーユーザー python3 manage.py createsuperuser サーバー立ち上げログイン admin.py admin.site.register(XXX) model.pyをimportする def _str__(self): rturn self.titl urls.pyアプリ from .views import TodoList urlpatterns =[ path('list/', TodoList.as_view()), ] views.py from django.views.generic.list import ListView from .models import TodoModel class TodoModel(ListView): template = 'list.html' model = TodoModel list.htmlを作成(BASE_DIRのあるところ(manage.pyと同じ階層)) {% for item in object_list %} <ul> <li>{{ item.title}}</li> <li>{{ item.memo}}</li> </ul> {% endfor %} object_listはListViewの機能でmodelの中身をitemに入れていく ulrs.pyにpath('detail/<int:pk>', TodoDetail.as_view())追加 TodoDetailをimport views.pyにclass TodoDetail(DetailView): template_name = 'detail.html' model = TodoModel 追加 DetailView をimport(listを削除) templateディレクトリにdetail.htmlを作成 {{ object.title }} 追加 urls.pyのpatheに /<int:pk>を追加 """
bootstrapで見た目を整える
""" サイトにアクセスし、ドキュメントを見る。 スタートテンプレートからコピー detail.htmlに貼り付け 必要なもの以外は削除 コードはbodyタグの中に書く base.htmlのbodyタグの中に {% block header %} {% endblock heaader %} {% block content %} {% endblock content %} を追加し 各htmlに {% block content %} {% for item in object_list %} {{ item.tile}} {{ item.memo}} {% endfor %} {% endblock content %} を追加 detailの場合はobject.になる。forも書かない bootstrapのcomponentのalertstからコピー 例 <div class="alert alert-success" role="alert"> {{ item.tile}} </div> <div class="alert alert-success" role="alert"> {{ item.memo}} </div> headerに <div class="jumbotron jumbotron-fluid"> <div class="container"> <h1 class="display-4">Fluid jumbotron</h1> <p class="lead">This is a modified jumbotron that occupies the entire horizontal space of its parent.</p> </div> </div> contentに<div class="container"></div> を追加for分の外 幅を調整する サイトのボタンのコードをコピーしてitemの下に追加 itemに<p></p>追加 btn-primary btn-lg disabled" tabindex="-1" 色 大きさ クリック list.html class "alert alert-{{ item.priority }}" model.pyに CHOICE = (('danger','high'), ('warning ','normal'),('primary ','low')) priority = models.CharField( max_length=50, choices= CHOICE ) dudate = models.DateField() を追加してマイグレーションする 1→timezone.now→1→'danger' """
""" ulrs.pyにpath('create/', TodoCreate.as_view()), importにTodoCreate追加 viewsにclass TodoCreate(CreateView): template_name = 'create.html' model = TodoModel fields = modelで書いた変数を書く createviewもimport create.htmlに {% extends 'base.html' %} {%block content %} <form action="" method="POST">{% csrf_token %} {{ form.as_p }} <input type="submit" value="create"> </form> {% endblock content %} 追加 ulrsにname=を追加 viewsにdjango.urls revers_lasyをimport success_url = reverse_lazy('list')追加 DeleteView urls.pyにTodoDleteをimportし path('delete/<int:pk>', TodoDelete.as_view(), name='delete'), 追加 viewsにDeletViewをimport class TodoDelete(DeleteView): template_name = 'delete.html' model = TodoModel success_url = reverse_lazy('list') 追加 delete.htmlにcreate.htmlのコードをコピー form.as_pを削除しvalueをdeleteに変更 updatevie ulrs path('update/<int:pk>', TodoUpdate.as_view(), name='update'), views class TodoUpdate(UpdateView): template_name = 'update' model = TodoModel fields = ('title', 'memo', 'priority', 'dudate') update.html {% extends 'base.html' %} {%block content %} <form action="" method="POST">{% csrf_token %} {{ form.title }} {{ form.memo }} {{ form.priority }} {{ form.dudate }} <input type="submit" value="update"> </form> {% endblock content %} 各ボタンをクリックしてリンクさきへ飛ぶ list.htmlの<href>の"#"を {% url 'detail' item.pk %}などに変更 """