ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • (파이썬 웹프로그래밍) 북마크앱 만들기
    computer_IT 2022. 8. 15. 21:02

     

    반응형

    한빛미디어 파이썬웹프로그래밍

    Django 폴더를 만들고 python -m venv venv 명령으로 가상환경을 만든다. 그리고 . venv/bin/activate 명령으로 가상환경을 실행 후, pip install django 로 장고 프레임워크를 설치한다. 그리고 python -m django startproject mysite(원하는 프로젝트 이름) 명령으로 프로젝트를 생성한다.

    settings.py 파일을 열고 TIME_ZONE = 'Asia/Seoul' 으로 변경한다. mysite 폴더로 이동 후, 사용자 및 권한 그룹 테이블을 만들어주기 위해 python manage.py migrate 명령을 실행한다. 슈퍼유저 생성을 위해 python manage.py createsuperuser 명령을 입력 후 화면의 지시에 따라 정보를 입력하여 관리자를 생성한다. 

    bookmark 앱을 만들기 위해 python manage.py startapp bookmark 명령을 입력한다. setting.py 파일에 INSTALLED_APPS 에 'bookmark', 를 추가한다. 보다 정확한 방법은 'bookmark.apps.BookmarkConfig', 로 등록하는 것이다. 

    북마크앱은 테이블을 하나만 필요하므로 models.py 파일을 열고 다음과 같이 입력한다.

    from django.db import models
    
    # Create your models here.
    class Bookmark(models.Model):
        title = models.CharField(max_length=100, blank=True, null=True) # 공백값을 가질 수 있고, 값이 없을 수도(null) 있다.
        url = models.URLField('url',unique=True)
    
        def __str__(self): # 객체를 문자열로 표현할 때 사용    
            return self.title

    그리고 관리자사이트에 보이도록 등록해주어야 하는데 admin.py 파일에 다음과 같이 입력한다.

    from django.contrib import admin
    from .models import Bookmark
    
    # Register your models here.
    admin.site.register(Bookmark)

    저장 후, python manage.py makemigrations 로 데이터베이스 변경사항을 업데이트하고, python manage.py migrate 명령으로 실제 적용한다. python manage.py runserver & 명령으로 서버를 백그라운드에서 실행한다.(명령 뒤에 &를 붙이면 백그라운드에서 실행되며, jobs 명령으로 실행 중인 프로세스 목록을 볼 수 있다.) http://127.0.0.1:8000/admin/ 에 접속하면 관리자 로그인 페이지가 나타나고 superuser 생성시 입력한 정보로 로그인한다. 장고에서 기본적으로 만들어주는 User, Group 테이블 이외에 방금 추가한 Bookmark 테이블을 볼 수 있다. 

    이제 url 설정을 위해 mysite/urls.py 파일을 열고 다음과 같이 입력한다. 앱이 간단하므로 mysite url만 생성한다.

    from django.contrib import admin
    from django.urls import path
    from bookmark.views import *
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('bookmark/', BookmarkLV.as_view(), name='index'),    
        path('bookmark/<int:pk>/', BookmarkDV.as_view(), name='detail'),    
    ]

    클래스형 뷰로 만들기 위해 bookmark/views.py 파일을 다음과 같이 입력한다.

    from django.shortcuts import render
    from .models import Bookmark
    from django.views.generic import ListView, DetailView  # 클래스형 제네릭뷰를 사용
    
    # Create your views here.
    class BookmarkLV(ListView):
        model = Bookmark
    
    class BookmarkDV(DetailView):
        model = Bookmark

    템플릿 파일은 bookmark/templates/bookmark 폴더를 만들고 여기에 bookmark_list.html 파일을 생성한다.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Django Bookmark List</title>
    </head>
    
    <body>
    
    <div id="container">
    
        <h1>Bookmark List</h1>
    
        <ul>
            {% for bookmark in object_list %}
                <li><a href="{% url 'detail' bookmark.id %}">{{ bookmark }}</a></li>
            {% endfor %}
        </ul>
    
    </div>
    
    </body>
    </html>

    동일한 위치에 bookmark_detail.html 파일을 만든다.

    <!DOCTYPE html>
    <html>
    <head>
    <title>Django Bookmark Detail</title>
    </head>
    
    <body>
    
    <div id="container">
    
        <h1>{{ object.title }}</h1>
    
        <ul>
            <li>URL: <a href="{{ object.url }}">{{ object.url }}</a></li>
        </ul>
    
    </div>
    
    </body>
    </html>

    서버 실행 후  관리자페이지에서 북마크를 추가한 후, http://127.0.0.1:8000/bookmark/ 에 접속하면 다음과 같은 화면을 볼 수 있다.

     

    북마크앱(bookmark_list)
    검색엔진(bookmark_detail)

    반응형

    댓글

Designed by Tistory.