허허,,
쟁고,,,
알수록 어렵군
가산환경 만들기 혹은 활성화
source venv/Scripts/activate
from django.db import models
# models패키지에서 Model이란 아이를 쓸 것임.
class Article(models.Model):
# 이것들은 column의 정보이니라
title = models.CharField(max_length=10) # 둘 다 문자열 타입이지만, 단 charfield는 길이 제한 해줘야 함.
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.title
python manage.py makemigrations: 설계도 저장해주기
python manage.py migrate: 설계도를 db에 적용할거야
index
import articles
from django.shortcuts import render, redirect
# 명시적 상대경로 쩜 말하는 것임 현재 같은 경로에 있는 models에서 가져온다 Article을
from .models import Article
def index(request):
# 작성한 모든 게시글을 출력할 것
# 모든 게시글을 조회
articles = Article.objects.all()[::-1] # 가져와서 순서 뒤집기
context = {
'articles': articles,
}
return render(request, 'articles/index.html', context)
new
def new(request):
return render(request, 'articles/new.html')
create
def create(request):
# new로부터 title과 content를 받아서 저장해야 함
title = request.POST.get('title')
content = request.POST.get('content')
# 왼쪽 title은 클래스 변수 이름이고, 오른쪽은 할당할 값이며 위에 있는 아이
article = Article(title=title, content=content)
article.save()
# 작성을 완료 했다면 해당 글의 디테일 페이지로 이동
return redirect('articles:detail', article.pk)
detail
def detail(request, pk):
article = Article.objects.get(pk=pk) # 무엇을 볼 것인지 콬 집기
context = {
'article': article,
}
return render(request, 'articles/detail.html', context)
edit, update
def edit(request, pk): #edit.html에서 업데이트할 것
article = Article.objects.get(pk=pk)
context = {
'article':article,
}
return render(request, 'articles/edit.html', context)
-------------------------
def update(request, pk):
article = Article.objects.get(pk=pk)
article.title = request.POST.get('title')
article.content = request.POST.get('content')
article.save()
return redirect('articles:detail', article.pk)
delete
def delete(request, pk):
article = Article.objects.get(pk = pk) # 삭제할 항목 고르기
article.delete()
return redirect('articles:index') #삭제하고 다시 index페이지로 돌아가
index.html
{% extends 'base.html' %}
{% block title %}요기는 인덱스양{% endblock title %}
{% block content %}
<h1>INDEX</h1>
<a href="{% url 'articles:new' %}">NEW</a>
{% comment %} <h2>{{ articles }}</h2> {% endcomment %} # 전체 조회
<hr>
{% for article in articles %}
<p>번호: {{ article.pk }}</p> # 보기 편하게 번호 붙여줌
<p>제목: {{ article.title }}</p>
<p>내용: {{ article.content }}</p>
#클릭하면 detail로 연결
<a href="{% url 'articles:detail' article.pk %}">DETAIL</a>
<hr>
{% empty %} # 비어 있다면 없다고 표시
<p>게시글 엄썽</p>
{% endfor %}
{% endblock %}
new.html
{% extends 'base.html' %}
{% block title %}입력하라우{% endblock title %}
{% block content %}
<h1>NEW</h1>
<form action="{% url 'articles:create' %}" method="POST"> # form태그로 정보넘겨주긔
{% csrf_token %} # 보안
<label for="title">TITLE:</label>
<input type="text" id="title" name="title">
<br>
<label for="content">CONTENT:</label>
<textarea name="content" id="content" cols="30" rows="10"></textarea>
<br>
<input type="submit" value="작성">
</form>
<a href="{% url 'articles:index' %}">BACK</a>
{% endblock %}
{% extends 'base.html' %}
{% block title %}DETAIL이란다{% endblock title %}
{% block content %}
<h1>DETAIL</h1>
<p>{{ article.pk }}번째 글</p>
<hr>
<p>{{ article.title }}</p>
<p>{{ article.content }}</p>
<p>작성일 : {{ article.created_at }}</p>
<p>수정일 : {{ article.updated_at }}</p>
<hr>
<a href="{% url 'articles:edit' article.pk %}">EDIT</a>
<form action="{% url 'articles:delete' article.pk %}" method='POST'>
{% csrf_token %}
<button class="btn btn-danger">DELETE</button>
</form>
<a href="{% url 'articles:index'%}">BACK</a>
{% endblock %}
edit.html
{% extends 'base.html' %}
{% block title %}수정하라우{% endblock title %}
{% block content %}
<h1>EDIT</h1>
<form action="{% url 'articles:update' article.pk %}" method="POST">
{% csrf_token %}
<label for="title">TITLE: </label>
<input type="text" name="title" id="title" value="{{ article.title }}"><br>
<label for="content">CONTENT: </label>
<textarea name="content" id="content" cols="30" rows="10">{{ article.content }}</textarea><br>
<input type="submit" value="수정">
</form>
<a href="{% url 'articles:index' %}">BACK</a>
{% endblock %}