# 파이참에서 프로젝트를 생성했다는 가정.
프로젝트 및 앱 생성
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 |