본문 바로가기

Backend/Python

[Django] 게시판, 관리자, Superuser

반응형

blog페이지를 임의로 생성하고 Main페이지를 추가한것 처럼 blog페이지를 추가해준다.

# views.py
from django.shortcuts import render

# Create your views here.
def index(request):
    return render(request, 'main/index.html')

def board(request):
    return render(request,'main/board.html')

# main\urls.py
from django.urls import path

from . import views


urlpatterns = [
    path('', views.index, name='index'),
    path('board', views.board, name='board'),
]

# 아래와 같이도 작성 가능
# from .views import *
#
# urlpatterns = [
#	path('', index),
#	path('blog/',blog),
# ]

 

models ( 나는 Spring을 구성할 때 사용하는 Entity나 Dto와 유사하다고 생각 )

Django에서 데이터를 DB에 저장할때 어디에 어떤 형태로 저장되는지 정의하는 것이 Model이라고 한다.

from django.db import models

# Create your models here.
# Notice( Title, Contents )
class Notice(models.Model):
    title = models.CharField(max_length=50)
    contents = models.TextField

 

이렇게 생성한 모델을 DB에 적용(콘솔에서 입력)

python manage.py makemigrations 
python manage.py migrate

 

그리고 오늘의 마지막 작업인 Admin에게 접근권한을 주고 SuperUser을 생성한다.

Admin 접근권한 부여

from django.contrib import admin

# notice Model을 불러옴
from .models import Notice

# Register your models here.
# admin이 Notice 접근
admin.site.register(Notice)

 

SuperUser생성(콘솔에서 입력)

SuperUser는 django 프로젝트의 모든 app 및 object를 관리하는 계정이다.
manage.py를 통해 SuperUser 계정이 생성되며, username, email address, 그리고 강한 password가 필요하다.
python manage.py createsuperuser

 

이렇게 입력 하고 서버를 시작해보자

python manage.py runserver

 

그리고 admin으로 접근해보면 로그인이 가능해진다.

 

이 상태에서 그냥 add를 눌러 제목을 입력하면 왼쪽처럼 object(1), object(2)의 형식으로 추가된다.

 이것을 오른쪽과 같이 수정하려면 아래와 같이 코드를 추가하면 된다.

# models.py
from django.db import models

# Create your models here.
# Notice( Title, Contents )
class Notice(models.Model):
    title = models.CharField(max_length=50)
    contents = models.TextField

    # Notice Object라고 나오는 제목을 title로 나타나게 수정
    def __str__(self):
        return self.title

 

그리고 해당 리스트들이 board페이지로 갔을때 나타나게 작업한다

# views.py
from django.shortcuts import render
# View에 Model(Notice) 가져오기
from .models import Notice

# Create your views here.
def index(request):
    return render(request, 'main/index.html')

def board(request):
    # board리스트를 불러오게 수정
    # return render(request,'main/board.html')
    # 모든 Notice를 가져와 list에 저장
    noticeList = Notice.objects.all()
    # board.html오픈시 모든 Notice의 list가져옴
    return render(request, 'main/board.html', {'noticeList': noticeList})
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>게시판 페이지 입니다.</h1>
        <!-- 게시판(noticeList)의 게시글(list)을 하나씩 보여줍니다 -->
        <!-- {%%} 내부엔 파이썬이 사용됩니다 -->
        <table>
        {% for list in noticeList %}
            <ul>
                <li>{{list.title}}</li>
                <li>{{list.contents}}</li>
            </ul>
        {% endfor %}
        </table>
</body>
</html>

 

반응형

'Backend > Python' 카테고리의 다른 글

[DRF] Django Rest Framework (1)  (0) 2024.07.09
[DRF] Django Rest Framework (0)  (0) 2024.07.09
[Django] 단순 웹 페이지 구현  (0) 2024.03.28
[Django] Django설치  (0) 2024.03.26
[Python] Django vs Flask 비교  (0) 2024.03.26