J1Yun
ZU-TECHLOG
J1Yun
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ“‘ Category (135)
    • Algorithm (61)
      • ๐Ÿ“š Concept (6)
      • ๐Ÿ“˜ Baekjoon Judge (53)
      • ๐Ÿ“— Programmers (2)
    • Computer Science (42)
      • ๐Ÿ”’ Operating System (14)
      • ๐Ÿ“ก Network (15)
      • ๐Ÿ’พ Database (8)
      • ๐Ÿงฉ Design Pattern (4)
      • ๐Ÿ”‘ Security (1)
    • Activities (12)
      • ๐Ÿฆ ๋ฉ‹์Ÿ์ด์‚ฌ์ž์ฒ˜๋Ÿผ 9๊ธฐ (6)
      • ๐Ÿ’ป SW๋งˆ์—์ŠคํŠธ๋กœ 13๊ธฐ (6)
    • Infra (1)
      • โ˜๏ธ AWS (1)
    • Languages (1)
      • ๐Ÿ’™ Python (1)
    • Backend (7)
      • ๐Ÿ”ต Django (4)
      • ๐ŸŸข Node.js (3)
    • Ect. (8)
      • ๐Ÿ’ฌ Talk (0)
      • ๐Ÿ—‚๏ธ ๊ฐœ๋ฐœ์ง๊ตฐ ์ทจ์—… ์ค€๋น„์ž๋ฃŒ (8)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

250x250
hELLO ยท Designed By ์ •์ƒ์šฐ.
J1Yun

ZU-TECHLOG

[Django] ์žฅ๊ณ  CRUD ๊ตฌํ˜„ - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ
Backend/๐Ÿ”ต Django

[Django] ์žฅ๊ณ  CRUD ๊ตฌํ˜„ - ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ

728x90

CRUD ๋ž€?

  • Create :  DB์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•จ
  • Read : DB์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ด
  • Update : DB์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•จ
  • Delete : DB์˜ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•จ

 

Create - ๋ฐ์ดํ„ฐ ์ƒ์„ฑ

- GET : ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ์š”์ฒญ

    - ๋ฐ์ดํ„ฐ๊ฐ€ URL์— ๋‚˜ํƒ€๋‚จ

# ex) ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ search

def search(request):
    keyword = request.GET['search_value']

 

  • POST : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์š”์ฒญ
    • ๋ฐ์ดํ„ฐ๊ฐ€ URL์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ
    • csrf ๊ณต๊ฒฉ ๋ฐฉ์ง€ ํ•„์š”
# views.py

def create(request):
    new_blog = Blog() # ๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ
    new_blog.title = request.POST['title']
    new_blog.writer = request.POST['writer']
    new_blog.body = request.POST['body']
    new_blog.pub_date = timezone.now()
    new_blog.save() # ๊ฐ์ฒด ์ €์žฅ
    return redirect('detail', new_blog.id)
<!-- new.html -->

<form action="{% url 'create' %}" method="post">
    {% csrf_token %}
    <input type="text" name="title">
    <input type="text" name="writer">
    <textarea name="body"></textarea>
    <button type="submit">์ œ์ถœํ•˜๊ธฐ</button>
</form>

 

  • form ์‚ฌ์šฉ : ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์šฉ์ด
# form.py ์ƒ์„ฑ

from django import forms
from .models import Blog

class BlogForm(forms.ModelForm):
    class Meta:
        model = Blog
        fields = ['title','writer','body']
# views.py

def new(request):
    form = BlogForm() # ํผ ์ƒ์„ฑ
    return render(request, 'new.html', {'form' : form})
    
def create(request):
    form = BlogForm(request.POST, request.FILES)
    if form.is_valid():
        new_blog = form.save(commit=False)
        new_blog.pub_date = timezone.now()
        new_blog.save()
        return redirect('detail' , new_blog.id)
    return redirect('home')
<!-- new.html -->

<form action="{% url 'create' %}" method="post">
    {% csrf_token %}
    {{form.as_p}}
    <button type="submit">์ œ์ถœํ•˜๊ธฐ</button>

 

Read - ๋ฐ์ดํ„ฐ ํ˜ธ์ถœ

  • ์ฟผ๋ฆฌ์…‹ : ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ชจ๋“  ํ•„๋“œ ๊ฐ€์ ธ์˜ค๊ธฐ
# views.py

def blogList(request):

    blogs = Blog.objects.all() # 1) ๋ชจ๋“  ๊ฐ์ฒด
    blogs = Blog.objects.filter(writer='CJY') # 2) writer='CJY'๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ชจ๋“  ๊ฐ์ฒด
    
    return render(request, 'blogList.html', {'blogs': blogs})
<!-- blogList.html -->

{% for blog in blogs %} <!--for ๋ฌธ์„ ํ†ตํ•œ ๊ฐ์ฒด ์ ‘๊ทผ-->
    {{blog.title}}
    {{blog.body}}
{% endfor %}

 

  • ๊ฐ์ฒด : ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ํ•„๋“œ ํ•˜๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ
def detail(request, blog_id):

    details = Blog.objects.get(pk=blog_id) # 1) pk=blog_id๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ์ฒด ํ•˜๋‚˜
    details = get_object_or_404(Blog, pk=blog_id) # 2) ์ž˜๋ชป๋œ ์ ‘๊ทผ์— ๋Œ€ํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ
    
    return render(request, 'detail.html', {'details': details})
<!-- datail.html -->

{{details.title}} <!--๊ฐ์ฒด ๋ฐ”๋กœ ์ ‘๊ทผ-->
{{details.body}}

 

Update - ๋ฐ์ดํ„ฐ ์ˆ˜์ •

- ํ•ด๋‹น ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ์ˆ˜์ •ํ•˜์—ฌ ์ €์žฅ

# views.py

def update(request, id):
    update_blog = Blog.objects.get(id=id) # ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๋กœ๋“œ
    update_blog.title = request.POST['title']
    update_blog.writer = request.POST['writer']
    update_blog.body = request.POST['body']
    update_blog.pub_date = timezone.now()
    update_blog.save() # ์ƒˆ๋กœ ์ €์žฅ
    return redirect('detail' , update_blog.id)
<!-- edit.html -->

<form action="{% url 'update' blog.id %}" method="post">
    {% csrf_token %}
    <input type="text" name="title" value="{{blog.title}}" />
    <input type="text" name="writer" value="{{blog.writer}}" />
    <textarea name="body">{{blog.body}}</textarea>
    <button type="submit">์ œ์ถœํ•˜๊ธฐ</button>
</form>

 

Delete - ๋ฐ์ดํ„ฐ ์‚ญ์ œ

- ํ•ด๋‹น ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ ํ›„ ์‚ญ์ œ

# views.py

def delete(request, id):
    delete_blog = Blog.objects.get(id = id)
    delete_blog.delete()
    return redirect('blogList')
<!-- detail.html -->

<a href="{% url 'delete' details.id%}" role="button">์‚ญ์ œํ•˜๊ธฐ</a>

 

728x90

'Backend > ๐Ÿ”ต Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Django] ์žฅ๊ณ  ์ •์ ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ - Static, Media  (0) 2021.07.07
[Django] ์žฅ๊ณ  models ๋ฐ DB ์„ค๊ณ„ - Migration, Admin  (1) 2021.05.16
[Django] ์žฅ๊ณ  ์‹ค์Šต/๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„ํ•˜๊ธฐ - ํ”„๋กœ์ ํŠธ ๋ฐ ์•ฑ ์ƒ์„ฑ  (0) 2021.05.11
    'Backend/๐Ÿ”ต Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€์ด๋‹ค
    • [Django] ์žฅ๊ณ  ์ •์ ํŒŒ์ผ ๊ด€๋ฆฌํ•˜๊ธฐ - Static, Media
    • [Django] ์žฅ๊ณ  models ๋ฐ DB ์„ค๊ณ„ - Migration, Admin
    • [Django] ์žฅ๊ณ  ์‹ค์Šต/๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„ํ•˜๊ธฐ - ํ”„๋กœ์ ํŠธ ๋ฐ ์•ฑ ์ƒ์„ฑ
    J1Yun
    J1Yun
    ๊ฐœ๋ฐœ ๊ด€๋ จ ๊ธฐ์ˆ  ๋ฐ ๊ณต๋ถ€ ๋‚ด์šฉ ๊ธฐ๋ก์žฅ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”