프로그래밍 공부

Django Framework 공부 1 본문

Programming/Django

Django Framework 공부 1

khj1999 2023. 10. 18. 19:19

https://youtube.com/playlist?list=PLuHgQVnccGMDLp4GH-rgQhVKqqZawlNwG&si=2bgYsyU6sto3w9MZ

 

Python Django Web Framework

 

www.youtube.com

생활코딩 Django 강의로 공부를 시작

 

실행환경

VScode, python 3.9.13 anaconda

 

1. Django 설치 방법

pip install django

 

2. Django project 시작 방법

django-admin startproject 프로젝트 이름

django-admin 키워드를 사용해 다른 명령를 확인 할 수 있음

 

3.파일 설명

중요한 파일

settings - 프로젝트를 운영하는데 필요한 설정

urls - 사용자가 접속하는 path에 따라서 요청을 어떻게 처리할지 라우팅 해주는 파일

manage.py - 프로젝트를 진행하는데 있어서 필요한 유틸리티 파일

 

4. 서버 실행

runserver 뒤에 8888은 포트 번호이다 아무것도 입력하지 않으면 임의로 8000으로 잡히고 저렇게 숫자를 입력하면 내가 원하는 포트 번호를 사용 할 수 있다.

 

5. app 만들기

django-admin startapp 이름

성공하면

이런 식으로 폴더가 생긴다.

 

6. 라우팅

다른 곳으로 url를 위임하는 방법

 

이런식으로 작성해주고

 

내가 위임해줄 app 폴더에 urls파일을 만들어준다 이 예시에서는 myapp 이라는 app에 urls.py파일을 만들어준다.

myapp 폴더
urls.py 파일

이제 웹페이지를 작성하고 라우팅을 해준다

7. 홈페이지 읽기 기능 구현하기

from django.shortcuts import render, HttpResponse
import random

# 딕셔너리 리스트 데이터
topics = [
    {'id':1, 'title':'Routing', 'body':'Routing is ..'},
    {'id':2, 'title':'View', 'body':'View is ..'},
    {'id':3, 'title':'Model', 'body':'Model is ..'},
]

# 사이트 기본 템플릿
def HTMLTemplate(articleTag):
    global topics
    ol = ''
    for topic in topics:
        ol += f'<li><a href="/read/{topic["id"]}">{topic["title"]}</a></li>'
    return f'''
    <html>
    <body>
        <h1><a href="/">Django</a></h1>
        <ol>
            {ol}
        </ol>
        {articleTag}
    </body>
    </html>
    '''

# Create your views here.
# 메인 페이지
def index(request):
    article = '''
    <h2>Welcom</h2>
    Hello, Django
    '''
    return HttpResponse(HTMLTemplate(article))
    # return HttpResponse('<h1>Random</h1>'+str(random.random()))

# 딕셔너리를 읽는 페이지
def read(request, id):
    global topics
    article = ''
    for topic in topics:
        if topic['id'] == int(id):
            article = f'<h2>{topic["title"]}</h2>{topic["body"]}'
            
    return HttpResponse(HTMLTemplate(article))

def create(request):
    return HttpResponse('Create')

실행결과

메인 페이지
1번 페이지
2번 페이지
3번 페이지

참고사항 f-string을 사용하면 {} 안에 원하는 값을 사용할 수 있다

ex)

출력

 

Comments