Python Django Project (2)

dada·2020년 7월 23일
0

django

목록 보기
2/3
post-thumbnail

CRUD 기능 추가하기(1)

CREATE & READ

0. CRUD?

Create: 생성
Read: 읽기
Update: 수정
Delete: 삭제

1. Create 기능 만들기

admin 계정으로 게시글 만들어보기

  • models.py
    Blog 모델 생성
    차례로 제목, 생성 시간, 수정 시간, 내용
class Blog(models.Model):
    title = models.CharField(max_length=200)
    created_at = models.TimeField(auto_now_add=True)
    updated_at = models.TimeField(auto_now=True)
    body = models.TextField()     
        
    def __str__(self):
    return self.title
  • 블로그 생성 후 터미널에 데이터 전송

    python manage.py makemigrations
    python manage.py migrate

  • admin.py
    모델 생성 후 admin에 등록

from .models import Blog
admin.site.register(Blog)
  • admin 계정 생성

python manage.py createsuperuser
python manage.py runserver

http://127.0.0.1:8000/admin/
접속 후 생성한 아이디, 비밀번호 입력
admin 페이지에 들어가서 Blog 게시글을 추가할 수 있음

form으로 게시글 작성하기

  • new.html 생성
  • views.py
def new(req):
return render(req, 'new.html')
  • urls.py
    new.html 연결해주기
path('new/', myapp.views.new, name='new'),
  • index.html
    새 글쓰기 링크 연결해주기
<a href="{% url 'new' %}>새 글쓰기</a>
  • new.html
<h1>new</h1>

<form action="{% url 'create' %}" method="POST">
    {% csrf_token %}
    <div>
        <label for="title">제목</label><br>
        <input type="text" id="title" name='title'> 
    </div>
    <div>
        <label for="content">내용</label><br>
    <textarea name="body" id="body" cols="30" rows="10"></textarea>
    </div>
    <input type="submit" value="글쓰기">
</form>
  • views.py
from django.shortcuts import render, redirect

def create(req):
    if(req.method == 'POST'):
        post = Blog()
        post.title = req.POST['title']
        post.body = req.POST['body']
        post.save()
    return redirect('index')
  • urls.py
urlpatterns = [
    path('create/', myapp.views.create, name='create'),
]

2. Read 기능 만들기

  • views.py
    blog에 작성된 객체들을 불러와줌
from .models import Blog

def index(req):
    blogs = Blog.objects
    return render(req, 'index.html', {'blogs' : blogs})
  • index.html
    blog 글을 화면에 띄우기
{% for blog in blogs.all %}
<h1>{{blog.title}}</h1>
<p>{{blog.created_at}}</p>
<p>{{blog.body}}</p>
{% endfor %}
profile
AI, Python 등 공부용 블로그

0개의 댓글