์น์ฌ์ดํธ์ ์ค๋ณต๋๋ ๋ถ๋ถ์ base.html๋ก ๋ง๋ค์ด ์์ํด๊ฒ ์ต๋๋ค.
๋ ์ ๋ฒ์ ์์ฑํ๋ form์ modelform์ผ๋ก ๋ณ๊ฒฝํ๊ณ , post๋ก ์ฒ๋ฆฌํด
memolist์ ๋ฆฌ์คํธ ํํ๋ก ์ ์ฅํด ์ถ๋ ฅํด๋ณด๊ฒ ์ต๋๋ค.
+) admin์ฌ์ดํธ์ class Entries๋ฑ๋กํ๊ธฐ
์์
- <base.html ์ค์ >
- <modelform ์์ฑ>
- <form์์ ์ ๋ ฅ๋ฐ์ ๊ฐ ๋ฆฌ์คํธ๋ก ์ถ๋ ฅํ๊ธฐ>
- <admin์ฌ์ดํธ์ class Entries ๋ฑ๋กํ๊ธฐ>
<base.html ์ค์ >
1. base.html ์์ฑ
<!DOCTYPE html>
<html lang="ko">
<head>
{% load static %}
<link rel="stylesheet" href="{% static "admin/css/base.css" %}" />
<title>{% block title %}simple web{% endblock %}</title>
</head>
<body>
<h1><strong>๊ฐ๋จํ ๋ฉ๋ชจ ์น์ฌ์ดํธ</strong></h1>
<a href="/simp_web/page"><h2>Home</h2></a>
<div id="content", name="content">
{% block content %}
{% endblock %}
<br>
</div>
</body>
</html>
2. base.html ์์๋ฐ๋ htmlํ์ผ ์์ฑ
ex) base.html์ ์์๋ฐ๋ page.html
{% extends 'simp_web/base.html' %}
{% block content %}
<li><a href="page/memo">๊ธ</a></li>
<li><a href="page/account">๊ณ์ ๊ด๋ฆฌ</a></li>
{% endblock %}
<modelform ์์ฑ>
- Form class๋ฅผ ์์ํ๋ค.
- ์ง์ ๋ model๋ก๋ถํฐ fields์ ๋ณด๋ฅผ ์ฝ์ด๋ค์ฌ, form fields๋ฅผ ์ธํ ํ๋ค.
- ๋ด๋ถ์ ์ผ๋ก model instance๋ฅผ ์ ์งํ๋ค.
- ์ ํจ์ฑ ๊ฒ์ฆ์ ํต๊ณผํ ๊ฐ๋ค๋ก ์ง์ model instance์ ์ ์ฅ(save)๋ฅผ ์ง์ํ๋ค
- validator์ค์ ์ models.py์ ์ ์ํด์ผํ๋ค.
1. models.py/ forms.py/ views.py ํ์ผ ์์ฑ
1-1) models.py ์์ฑ
from django.db import models
# Create your models here.
class Entries(models.Model):
title = models.CharField(max_length=80, null=False)
content = models.TextField(null=False)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
1-2) forms.py ์์ฑ
from django.forms import ModelForm
from .models import Entries
class CreatememoForm(ModelForm):
class Meta:
model = Entries #์ด๋ค ๋ชจ๋ธ?
fields = ['title','content'] #๋ฌด์จ ์
๋ ฅ์ ๋ฐ์๊ฑด์ง
1-3) views.py ์์ฑ
from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Entries
from .forms import CreatememoForm
#์ค๋ต
def create(request):
if request.method == "POST": #post๋ฐฉ์์ด๋ฉด
form = CreatememoForm(request.POST)
if form.is_valid(): #์ ํจ์ฑ ๊ฒ์ฌ
form.save() # ์
๋ ฅ๋ฐ์ ๊ฐ ์ ์ฅ
return redirect('memolist')
else: #get๋ฐฉ์์ด๋ฉด
form = CreatememoForm()
return render(request, 'simp_web/create.html', {"form":form})
2. post๋ฐฉ์ vs get๋ฐฉ์
2-1) GET
- URL์ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ์ ์ก๋๋ค.
- ์ ์กํ ์ ์๋ ์ ๋ณด์ ๊ธธ์ด๊ฐ ์ ํ.
- ํผ๋จธ๋งํฌ(์ ๋ณด๋ฅผ ์๋ณํ๋ ๊ณ ์ ํ ์๋ณ์) ์ฌ์ฉO.
2-2) POST
- header์ body์ ๋ด๊ฒจ์ ์ ์ก๋๋ค.
- URL ์์ ์ ๋ฌํ ์ ๋ณด๊ฐ ํ์๋์ง ์๋๋ค.(GET์ ๋นํด์ ๋ณด์์ ์ฝ๊ฐ์ ์ฐ์์ ์๋ค.)
- ์ ์กํ ์ ์๋ ๋ฐ์ดํฐ์ ๊ธธ์ด ์ ํX.
- ํผ๋จธ๋งํฌ ์ฌ์ฉX.
- ์๋ฒ ์ชฝ์ ์ด๋ค ์์ ์ ๋ช ๋ น(CRD ๋ฑ)ํ ๋ ์ฌ์ฉํ๋ค.
3. ๊ฒฐ๊ณผ
<form์์ ์ ๋ ฅ๋ฐ์ ๊ฐ ๋ฆฌ์คํธ๋ก ์ถ๋ ฅํ๊ธฐ>
1. views.py์ memolist์ถ๊ฐ
def memolist(request):
memos = Entries.objects.all()
return render(request, 'simp_web/memolist.html', {'memos':memos})
2. memolist.html ํ ํ๋ฆฟ ์์ฑ
{% extends 'simp_web/base.html' %}
{% block title %}memolist{% endblock %}
{% block content %}
<table class="table">
{% for item in memos %}
<tr>
<td>{{ item.title }}</td>
<td>{{ item.content }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}
3. urls.py์ url๋งคํ
path('simp_web/page/memo/memolist', views.memolist, name='memolist'), #์ถ๊ฐ
4. ๊ฒฐ๊ณผ
: memolist ํ ํ๋ฆฟ
<admin์ฌ์ดํธ์ class Entries ๋ฑ๋กํ๊ธฐ>
models.py์ ์๋ Entries๋ฅผ admin.py์ ์ ์ฅ
from django.contrib import admin
from .models import Entries
admin.site.register(Entries)
'๐ก์น ํ๋ก์ ํธ > (๋ฐฑ์๋)Django - ํ๋ก์ ํธ01' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก์ ํธ01. bootstrap ์ ์ฉํ๊ธฐ (0) | 2019.12.11 |
---|---|
ํ๋ก์ ํธ01. ํจ์ํ ๋ทฐ์์ ํด๋์คํ ๋ทฐ๋ก ๋ณ๊ฒฝ & detail, update, delete๊ตฌํ (0) | 2019.12.09 |
ํด๋์คํ view (0) | 2019.12.09 |
ํ๋ก์ ํธ01. admin ์ฌ์ดํธ์ model class ๋ฑ๋กํ๊ธฐ (0) | 2019.12.09 |
ํ๋ก์ ํธ01. ๋ฉ๋ชจ ์น ๊ธฐํํ๊ธฐ & ๊ธ ์์ฑ ํผ ๋ง๋ค๊ธฐ (0) | 2019.12.04 |