본문 바로가기
DJANGO

DJANGO 실습 (inflearn)

by olbiizl_ 2021. 9. 30.

인프런에서 들은 강의를 바탕으로 간단한 앱을

만들어보는 실습을 해보겠습니다

차근차근 따라오시면 아주 간단한 웹 + 앱을 만들 수 있을거에요 !


1. 실습할 폴더로 이동

cd [폴더 위치]

 

2. 프로젝트 생성

django-admin startproject [프로젝트명]

3. 프로젝트로 이동 후 프로젝트 안에 앱 생성

cd [프로젝트명]
manage.py startapp [앱 명]

4.  데이터 베이스 생성 (베이스 테이블 자동 생성)

manage.py migrate

5. 관리자(SUPERUSER) 생성

manage.py createsuperuser

6. 포트에서 서버 실행 -> 웹 서버가 실행됨

manage.py runserver

🎈 포트 번호를 변경하고 싶다면 manage.py runserver 8080

 

7.  관리자 페이지 들어가기
-> 해당 서버 주소에 /admin 붙이기
-> 관리자를 생성할 때 입력했던 username과 password로 접근 가능

 

8. Settings.py -> settings.py 에서 앱 설치

  🙅‍♀️ 쉼표를 붙이는 습관을 들여야 함

Installed_APPS = {
			...
            '[앱 명]',
}

 

9. models.py 에 클래스 입력

class Article(models.Model):
    name = models.CharField(max_length=50)
    title = models.CharField(max_length=50)
    contents = models.TextField()
    url = models.URLField()
    email = models.EmailField()
    cdate = models.DateTimeField(auto_now_add=True)
  • models.py 은 기본적으로 클래스로 생성이 된다.
  • class는 model을 상속하게 된다. 
  • cdate = 게시물을 생성하게 된 날짜와 시간
  • auto_now_add=True -> 게시물이 생성이 될 때 자동으로 저장됨

10. 모델을 데이터 베이스에 생성한다.

manage.py makemigrations [앱 명]

-> model이 생성되었는지를 확인할 수 있다.
->아직 database에 적용은 되지 않은 상태

manage.py migrate

-> model에 대한 database테이블이 db.sqlite3 파일에 생성된 상태

 

11. 사용자들에게 전달할 url 생성 in urls.py (community : 앱 명)

from django.contrib import admin
from django.conf.urls  import include, url
from community.views import *

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^write/', write, name='write'),
]

12. url.py에서 사용한 write 함수 정의 (in views.py)

community 폴더 안에 templates 폴더를 만든 후, 그 안에 write.html 파일 생성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>write</title>
</head>
<body>
    <form action"" method="post">
        {{ form.as p }}
        {{ % csrf_token % }}
        <button type="submit" class="btn btn-primary">저장</button>
    </form>
</body>
</html>

13. form 태그를 사용할 수 있는, ModelForm을 상속하는 Form함수 선언 (in community->forms.py)

from django.forms import ModelForm
from community.models import *

class Form(ModelForm):
    class Meta:
        model = Article   
        fields=['name', 'title', 'contents', 'url', 'email']
        #사용할 필드명 모두 나열

14. form에서 받은 내용 데이터 베이스에 저장하기(by views.py)

from django.shortcuts import render
from community.forms import *
# Create your views here.

def write(request):
    if request.method =='POST':
        form = Form(request.POST)
        if form.is_valid() :
            form.save()
    else:
        form=Form()
            
    return render(request, 'write.html', {'form':form})

15. list.html 생성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>View</title>
</head>
<body>
    제 목 : {{ article.title }}
    <br>
    저 자 : {{ article.name }}
    <br>
    내 용 : {{ article.contents }}
    <br>
    Email : {{ article.email }}
    <br>
</body>
</html>

16. view.html 생성

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>View</title>
</head>
<body>
    제 목 : {{ article.title }}
    <br>
    저 자 : {{ article.name }}
    <br>
    내 용 : {{ article.contents }}
    <br>
    Email : {{ article.email }}
    <br>
</body>
</html>

17. 전달받은 데이터 list.html에 저장하고 view.html에서 보여주기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>list</title>
</head>

<body>
    <ul>
        <li>제목 | 저자 | 날짜</li>
    {% for article in articleList %}
    <li><a href="/view/{{ article.id}}">{{ article.title }}</a> | {{ article.name }} | {{ article.cdate|date: "D d M Y" }}</li>
    {% endfor %}    
    </ul>
</body>
</html>

 

18. list함수와 view함수 생성 in views.py

from django.shortcuts import render
from community.forms import *
# Create your views here.

def write(request):
    if request.method =='POST':
        form = Form(request.POST)
        if form.is_valid() :
            form.save()
    else:
        form=Form()
            
    return render(request, 'write.html', {'form':form})

def list(request):
    articleList = Article.objects.all()
    return render(request, 'list.html', {'articleList':articleList})

def view(request, num="1"):
    article = Article.objects.get(id=num)
    return render(request, 'view.html', {'article':article})

19. 사용자에게 보여줄 url 생성

from django.conf.urls  import include, url
from django.contrib import admin
from community.views import *  

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^write/', write, name='write'),
    url(r'^list/', list, name='list'),
    url(r'^view/(?P<num>[0-9]+)/$', view),
]
반응형

'DJANGO' 카테고리의 다른 글

DJANGO 개념 (inflearn)  (0) 2021.09.30