-
미니방명록 예제Python Django 2022. 10. 23. 14:55
메인 urls.py
from django.contrib import admin from django.urls import path from myguest import views from django.urls.conf import include urlpatterns = [ path("admin/", admin.site.urls), path('', views.MainFunc), path('guest/', include('')) ]
include를 사용하여 guest/로 시작되는 것은 자식 urls.py를 생성하여 맡긴다.
자식 urls.py
from django.urls import path from myguest import views urlpatterns = [ path('select', views.ListFunc), path('insert', views.InsertFunc), path('insertok', views.InsertokFunc), ]
database models.py
from django.db import models # Create your models here. class Guest(models.Model): # myno = models.AutoField(auto_created=True, primary_key=True) title = models.CharField(max_length=50) content = models.TextField() regdate = models.DateTimeField() class Meta: # ordering = ('title', ) # ordering = ('title', 'id') ordering = ('-id',)
admin.py
from django.contrib import admin from myguest.models import Guest # Register your models here. class GuestAdmin(admin.ModelAdmin): list_display=('id', 'title', 'content','regdate') admin.site.register(Guest, GuestAdmin)
views.py
from django.shortcuts import render, redirect from myguest.models import Guest from datetime import datetime from django.utils import timezone from django.http.response import HttpResponseRedirect # Create your views here. def MainFunc(request): msg="<h1>홈페이지</h1>" return render(request, 'main.html', {'msg':msg}) def ListFunc(request): # gdatas=Guest.objects.all() #전체 자료 읽어옴 # print(gdatas) # #이런 식으로 데이터를 뿌려준다 # print(Guest.objects.get(id=1)) # print(Guest.objects.filter(id=1)) # print(Guest.objects.filter(title='안녕')) # print(Guest.objects.filter(title__contains='안녕')) # 정렬 # gdatas=Guest.objects.all().order_by('title') #오름차순 # gdatas=Guest.objects.all().order_by('-title') #내림차순 # gdatas=Guest.objects.all().order_by('-id') # gdatas=Guest.objects.all().order_by('title','-id') #타이틀 먼저, 그리고 아이디 정렬, 2개를 전달 # gdatas=Guest.objects.all().order_by('-id')[0:2] #로우가 2개만 나옴, 0이상 2미만 gdatas = Guest.objects.all() return render(request, 'list.html', {'gdatas':gdatas}) def InsertFunc(request): return render(request, 'insert.html') def InsertokFunc(request): if request.method == 'POST': # print(request.POST.get('title')) # print(request.POST['title']) # 먼저 잘 들어오는지 확인해야 된다. Guest( title = request.POST['title'], content = request.POST['content'], # regdate = datetime.now() regdate = timezone.now() ).save() # insert 하는 법 # return HttpResponseRedirect('/guest/select') # 추가 후 목록보기 return redirect('/guest/select') # 추가 후 목록보기
database의 값을 가져와서 gdatas에 담아두고 그것을 list.html로 넘긴다.
datetime이나 timezone을 import 받아서 현재 시간을 받아온다.
redirect방식으로 ‘/guest/select’로 이동시킨다. 그 이유는 list.html을 다시 만나야 되기 때문이다.
main.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <!--html parsing--> {{msg | safe}} 메뉴1 메뉴2 <a href="guest/select">미니 방명록</a> </body> </html>
만약 msg가 html 형식이라면 {{msg | safe}} 쓰는 것으로 html형식으로 적용되게 된다.
list.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <p>** 글 내용 **</p> <table border="1"> <tr> <th>아이디</th> <th>제목</th> <th>내용</th> <th>등록일</th> </tr> {% if gdatas %} {% for g in gdatas %} <tr> <td>{{g.id}}</td> <td>{{g.title}}</td> <td>{{g.content}}</td> <td>{{g.regdate}}</td> </tr> {% endfor %} {% else %} <tr> <td colspan="4">글이 없어요</td> </tr> {% endif %} </table> </body> </html>
'Python Django' 카테고리의 다른 글
Python Django 17 - table이 존재하는 상황(table 가져오기) (0) 2022.10.23 Python Django 16 - join 복수의 DB 사용(ORM) (0) 2022.10.23 Python Django 15 - ORM(DB) 사용 예제(필드 타입 명령) (0) 2022.10.23 Python Django 14 - Python ORM(DB) (0) 2022.10.23 Python Django 13 - forward, redirect (0) 2022.10.23