본문 바로가기
App Programming/Django

[Django] Admin (Room)

by goatlab 2023. 2. 17.
728x90
반응형
SMALL

Admin

 

Django Admin을 이용해서 관리자 사이트에 모델을 등록하고 이후 로그인하여 데이터를 추가할 수 있다. 터미널에서 다음 코드를 입력하여 슈퍼 계정을 생성한다.

 

python manage.py createsuperuser

 

그 다음, http://127.0.0.1:8000/admin/에서 앞서 생성한 슈퍼 계정으로 로그인하면 관리자 페이지로 접속 가능하다.

 

 

models.py

 

from django.db import models
from django.contrib.auth.models import User

class Topic(models.Model):
    name = models.CharField(max_length = 200)
    
    def __str__(self):
        return self.name

class Room(models.Model):
    host = models.ForeignKey(User, on_delete = models.SET_NULL, null = True)
    topic = models.ForeignKey(Topic, on_delete = models.SET_NULL, null = True)
    name = models.CharField(max_length = 200)
    description = models.TextField(null = True, blank = True)
    # participants =
    updated = models.DateTimeField(auto_now = True)
    created = models.DateField(auto_now_add = True)
    
    def __str__(self):
        return self.name
    
class Message(models.Model):
    user = models.ForeignKey(User, on_delete = models.CASCADE)
    room = models.ForeignKey(Room, on_delete = models.CASCADE)
    body = models.TextField()
    updated = models.DateTimeField(auto_now = True)
    created = models.DateField(auto_now_add = True)
    
    def __str__(self):
        return self.body[0:50]

 

views.py

 

from django.shortcuts import render
from .models import Room

rooms = [
    {'id':1, 'name':'Hi'},
    {'id':2, 'name':'Welcome!'}
]

def home(request):
    rooms = Room.objects.all()
    context = {'rooms': rooms}
    
    return render(request, 'base/home.html', context)

def room(request, pk):
    room = Room.objects.get(id = pk)

    context = {'room': room}
    
    return render(request, 'base/room.html', context)

 

admin.py

 

from django.contrib import admin

from .models import Room, Topic, Message

admin.site.register(Room)
admin.site.register(Topic)
admin.site.register(Message)

 

home.html

 

{% extends 'main.html' %}

{% block content %}
<h1>Home Template</h1>

<div>

    <div>
        {% for room in rooms %}
            <div>
                <span>@{{room.host.username}}</span>
                <h5>{{room.id}} -- <a href = "{% url 'room' room.id %}">{{room.name}}</a></h5>
                <small>{{room.topic.name}}</small>
                <hr>
            </div>

        {% endfor %}
    </div>
    
</div>

{% endblock content %}

 

터미널에서 다음을 수행한다.

 

python manage.py makemigrations
python manage.py migrate

 

https://developer.mozilla.org/ko/docs/Learn/Server-side/Django/Admin_site

 

Django Tutorial Part 4: Django admin site - Web 개발 학습하기 | MDN

LocalLibrary website의 모델을 만들었으므로, 우리는 Django Admin 을 이용해서 "실제" book data를 추가할 것입니다. 첫째로 우리는 당신에게 관리자 사이트에 모델들을 등록는 방법과, 이후 어떻게 로그인

developer.mozilla.org

 

728x90
반응형
LIST

'App Programming > Django' 카테고리의 다른 글

[Django] Search (검색 기능)  (0) 2023.02.17
[Django] CRUD  (0) 2023.02.17
[Django] 템플릿 (Templates) (2)  (0) 2023.02.02
[Django] 템플릿 (Templates) (1)  (0) 2023.02.01
[Django] URL's / Views  (0) 2023.02.01