-
Django 초간단 게시판 4. view, urlsPython/초간단 장고 Django 2021. 5. 28. 02:07반응형
1. view
초간단 버전 답게 모두 클래스 뷰이다.
리스트뷰를 상속받아 리스트를 만들고,
디테일뷰를 상속받아 디테일을 만들고...
.....장고에서는
작성하고, 읽고, 수정하고, 지우는 데 필요한
기본적인 클래스가 모두 제공된다.기본적으로 모델만 등록하고
몇 가지 설정만 추가로 잡아주면 된다.# board/views.py from django.urls import reverse_lazy from django.views.generic import ListView, CreateView, DetailView, UpdateView, DeleteView from .models import Article class ArticleList(ListView): model = Article paginate_by = 5 ordering = ['-id'] class ArticleCreate(CreateView): model = Article fields = ['title', 'author', 'content'] success_url = reverse_lazy('index') class ArticleDetail(DetailView): model = Article # context_object_name = 'article' class ArticleUpdate(UpdateView): model = Article fields = ['title', 'author', 'content'] success_url = reverse_lazy('index') class ArticleDelete(DeleteView): model = Article success_url = reverse_lazy('index')
리스트 뷰의 필수(?) 요소는 ordering 이다.
설정하지 않아도 작동은 하지만
UnorderedObjectListWarning 경고가 계속 발생한다.
기본 순서가 없는 모델에서 발생하는 경고.page 처리는 직접 처리하기가 꽤 까다롭다.
장고에서는 paginate_by 설정만 해주면,
page 처리가 (템플릿도 꽤 만져줘야 하지만) 가능하다.
(필수는 아님)생성과 수정은
에디팅할 필드 설정과
생성 또는 수정이 끝났을 때
돌아갈 URL 설정이 필수이다.지움도 지움이 성공한 뒤
돌아갈 URL을 설정해야 한다.2. urls
board 폴더의 urls.py를 수정하자.
# board/urls.py from django.urls import path from .views import ArticleList, ArticleDetail, ArticleDelete, ArticleCreate, ArticleUpdate urlpatterns = [ path('', ArticleList.as_view(), name='index'), path('create/', ArticleCreate.as_view(), name='create'), path('<int:pk>/', ArticleDetail.as_view(), name='detail'), path('<int:pk>/update/', ArticleUpdate.as_view(), name='update'), path('<int:pk>/delete/', ArticleDelete.as_view(), name='delete'), ]
<int:pk>에서 int를 빼면
create/, admin/과 충돌을 일으킨다.int를 명시하면, 숫자는 pk로,
문자는 다른 주소로
교통정리 되기 때문에
충돌을 일으키지 않는다.invalid literal for int() with base 10: 'favicon.ico'
이 에러를 처음 봤을 때 황당함이란..
왠 favicon.ico인가... 했었다...반응형