원본 : https://www.inflearn.com/course-status-2/
프로젝트 & app 생성
django-admin startproject tutorials .
python manage.py startapp community
디렉토리 구조 확인
manage.py
tutorials/
community/
관리자 페이지 확인
auth, admin 기본 데이터베이스 생성
python manage.py migrate
슈퍼유저 생성(통상은 admin)
python manage.py createsuperuser
웹서버 실행(default : 127.0.0.1:8000)
python manage.py runserver
접속 확인
http://localhost:8000
http://localhost:8000/admin/
settings.py 수정
INSTALLED_APPS : 'community',
community app 사용 가능.
글쓰기
데이터베이스 생성
community/models.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()
url = models.URLField()
email = models.EmailField()
cdate = models.DateTimeField(auto_now_add=True)
데이터베이스에 생성
python manage.py makemigrations community ==== 변화 여부 확인
python manage.py migrate === 실제 데이터베이스 생성
tutorials/urls.py 수정
from community.views import *
url(r'^write/', write, name='write'),
community/views.py 수정
def write(request):
return render(request, 'write.html')
community/templates 폴더 생성
write.html 생성
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>write</title>
</head>
<body>
write page.
</body>
</html>
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']
community/views.py에 write 함수에 form 연결.
def write(request):
form = Form()
return render(request, 'write.html', {'form':form})
views.py 수정. 저장하면 POST로 처리하고 저장하고, POST가 아니면 빈 폼 생성
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})
리스트
url(r'^list/', list, name='list'),
def list(request):
articleList = Article.objects.all()
return render(request, 'list.html', {'articleList':articleList})
<!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>
글 보기
url(r'^view/(?P<num>[0-9]+)/$', view),
숫자가 몇개 반복될 수 있고 num으로 받는다.
def view(request, num="1"):
article = Article.objects.get(id=num) ==== id로 1개만 찾는다.
return render(request, 'view.html', {'article':article})
template/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>
이렇게 하면 간단하게 게시물이 출력되는 걸 볼 수 있다.
'Development > Django' 카테고리의 다른 글
[Django REST Framework] Tutorial (0) | 2017.03.11 |
---|---|
[Django REST framework]Quickstart (0) | 2017.03.09 |