satomanotebook

プログラミング勉強で学んだことのアウトプットなんかだったり思ったことだったり

Djangoでwebサイト作成の流れ

仮想環境に入る

・プロジェクト作成
django-admin startproject 〇〇〇

・アプリ作成
python manage.py startapp 〇〇〇

・settings.py
INSTALLED_APPSの中にアプリ追加
DIRSにBASE_DIR / ['〇〇〇'] 追加

・サーバー起動
python3 manage.py runserver

・modelを作成してマイグレーション
python3 manage.py makemigrations
python3 manage.py

・アプリにurls.pyを作成

・プロジェクトのurl
path("", include(〇〇〇.urls')),
でアプリ先を指定

・セキュリティ
csrf_token

・スーパーユーザー作成
python3 manage.py createsuperuser

・models.pyで作成したclassを管理画面に表示
admin.pyに
from django.contrib import admin
from .models import Task

admin.site.register(〇〇〇) を追加

・pathで指定したurlに飛ぶ
path('login/', TaskLogin.as_view(next_page='tasks'), name='login'),
next_page= で指定できる




・後々仕様
LOGIN_URL = 'login'
STATICFILES_DIRS = [BASE_DIR / 'static']

・メモ
name指定
template_name = "" で指定

objectを他の名前にする
context_object_name

fields
models で作成したクラス

success_url = reverse_lazy('〇〇〇')で指定したページに移動

ログインしているユーザー名を表示
htmlに{% if request.user.is_authenticated %}

ログインをしたら指定したページに移動
Loginviewを使用したクラスに
def get_login(self):
return reverse_lazy('〇〇〇')

ログインしていないユーザーはログインページにリダイレクトさせる
LoginRequiredMixinを第一引数に渡す

新規作成
class RegisterApp(FormView):
template_name = 'todoapp/register.html'
form_class = UserCreationForm
success_url = reverse_lazy('tasks')

def form_valid(self, form):
user = form.save()
if user is not None:
login(self.request, user)
return super().form_valid(form)