# 파이참에서 프로젝트를 생성했다는 가정.

 

프로젝트 및 앱 생성 

pip install django
# `tutorial` 프로젝트 생성
django-admin startproject tutorial

# community 라는 이름의 APP생성 
python manage.py startapp community

# DB초기화 및 관리자 계정 생성
python manage.py migrate
python manage.py createsuperuser

# 서버 실행
python manage.py runserver

 

tutorial/settings.py 에서 앱 등록 (제일 먼저 해야 할 일!)

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'community',
]

 

community/model.py 에서 모델 생성

- 모델은 데이터베이스 사용을 쉽게 하는 도구. 작성해서 데이터베이스에 저장할 수 있도록 하자.

from django.db import models

# Create your models here.
class Article(models.Model):
    name = models.CharField(max_length=50)
    title = models.CharField(max_length=50)
    contents = models.TextField(editable = True)
    url = models.URLField(editable = True)
    email = models.EmailField()
    cdate = models.DateTimeField(auto_now_add=True)

 

데이터 베이스 관련 변경사항 있는지 확인 후 적용하기

python manage.py makemigrations community
python manage.py migrate 

 

tutorial/urls.py 에서 접근할 수 있는 주소 만들기 

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('write/', write, name='write'),
    path('list/', list, name='list'),
    path('view/<num>/', view),
]

 

community/views.py 에서 페이지 뷰 만들기 

from django.shortcuts import render

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

def list(request):
    return render(request, 'list.html')

def view(request, num="1"):
    return render(request, 'view.html')

# 아래 forms.py 생성 후에 view.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})

 

 

community/templates 폴더 생성 후, 폴더 내에 write.html, list.html, view.html 생성한다.

더보기
# 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>
# view.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>write</title>
</head>
<body>
  제 목 : {{ article.title }}
  <br>
  저 자 : {{ article.name }}
  <br>
  내 용 :{{ article.contents }}
  <br>
  Email : {{ article.email }}
  <br>
</body>
</html>
# list.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>write</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>

 

community/forms.py 생성, community/views.py 에서 내용 수정 (위 접은 글)

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

class Form(ModelForm):
    class Meta:
        model = Article
        fields=['name', 'title', 'contents', 'url', 'email']

 

배포 및 가져오기 

# pip freeze 을 텍스트 파일로 가져오기 
pip freeze > requirements.txt
"""
click==7.1.2
Flask==1.1.2
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
python-dotenv==0.15.0
Werkzeug==1.0.1
"""
# --그 텍스트파일 내용을 자동 설치 
pip install -r requirements.txt

 

 

 

 

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

멋쟁이 사자처럼 - django 강의  (0) 2021.01.05
하드 코딩 URL 없애기  (0) 2020.08.23
404 오류 처리  (0) 2020.08.22
모델 만들기  (0) 2020.08.22
뷰 만들기  (0) 2020.08.22
블로그 이미지

hjc_

୧( “̮ )୨

,