본문 바로가기
개발일지/Django

Django - admin superuser생성 및 기본 다루기

by 다니엘의 개발 이야기 2022. 10. 1.
320x100

# admin 계정 생성 (super user create)

 

#1

 

기본적으로 환경이 준비가 되어있다는 전제하에

(환경 준비가 안되어있고 뭐가 기본으로 준비되어야 할지도 모르겠다면

내가 작성한 ‘Django - 기본사이클 - 모델과 웹사이트1과 2’를 보고 준비하면 될것같다)

 

vscode터미널에 python manage.py createsuperuser

라고 입력한다.

 

그리고나서는

username

email

을 각각 입력하고

비밀번호는 너무 단순하지 않게 8자리 이상으로 작성한다. (예를들어 password 등 ok, 0000은 안됨)

 


# 그 외적으로는 만졌던 코드셋에 대해서 올려본다.

 

# 첫번째 파일

my_car_site > cars > views.py

from django.shortcuts import render, redirect
from django.urls import reverse
from . import models

# Create your views here.

def list(request):
    all_cars = models.Car.objects.all()
    context = {'all_cars':all_cars}

    return render(request, 'cars/list.html', context = context)

# 이 코드의 전체적 의미는 사용자가 POST방식, 즉 데이터를 직접 입력하는 것이면 if문을 따르고,
# 그 외의 경우는 그냥 add.html을 렌더링 한다는 의미다.
def add(request):
    # 이것은 사실상 POST방식, 즉, 사용자가 (여기서는 add함수 내부니깐) add 페이지에서
    # 데이터를 입력하면 해당 데이터를 print는 확인할 수 있는 것이고, 이 코드를 수정해주면 저장하여 누적도 가능하다.

    if request.POST:
        brand = request.POST['brand']
        year = int(request.POST['year'])
        models.Car.objects.create(brand=brand, year=year)
        # if user submitted new car ==> list.html
        return redirect(reverse('cars:list'))
    else:
        return render(request, 'cars/add.html')

def delete(request):
    if request.POST:
        # delete the car
        pk = request.POST['pk']
        try:
            models.Car.objects.get(pk=pk).delete()
            # 삭제 후에 어플리케이션 cars의 list로 리디렉션 한다는 뜻
            return redirect(reverse('cars:list'))
        except:
            print('pk not found')
            return redirect(reverse('cars:list'))
    else:
        return render(request, 'cars/delete.html')

# 두번째 파일

my_car_site > cars > models.py

from django.db import models

# Create your models here.
class Car(models.Model):
    # primary key가 auto increment방식으로 늘어간다.
    brand = models.CharField(max_length=30)
    year = models.IntegerField()
    
    def __str__(self):
        return f'Car is {self.brand} {self.year}'

# 세번째 파일

my_car_site > cars > admin.py

from django.contrib import admin
from cars.models import Car
# from .models import Car 도 사용은 가능한걸로 알고있다.

# Register your models here.


class CarAdmin(admin.ModelAdmin):
    # 필드의 순서가 brand, year이였는데, 그것을 재 조작하여주는 클래스다.
    # fields = ['year', 'brand']
    fieldsets = [
        ('TIME INFORMATION', {'fields':['year']}),
        ('CAR INFORMATION', {'fields':['brand']})
    ]

# register안의 인자는 Car를 import해온것부터
# 그 다음이 바로 위에 클래스 정의해준 것이다.
admin.site.register(Car, CarAdmin)
300x250