..

Chap06 최소 동작사이트 구축

목표

기능 테스트 후, database 실행 할 때마다 테스트의 목록이 남아있는데, 다음 테스트의 해석을 방해하는 경우 어떤식으로 해야하나.

요약

LiveServerTestCase

django 에서 제공하는 테스트용 데이터베이스 생성 라이브러리

ETC

csrf error

Django의 CSRF 보호는 사이트의 각 폼이 생성하는 POST 요청을 확인할 수 있는 토 큰을 자동 생성한다. 지금까지는 순수 HTML로 이루어진 템플릿을 사용했지만, 이제 부터는 Django의 템플릿 마술을 적용하도록 한다. CSRP 토큰을 추가하기 위해 템플 릿 태그를 이용한다.

ORM

객체 관계형 맵핑(Object-Relational Mapper, ORM)

이것을 이용하면 익숙한 객체 지향 코딩 방식을 이용해서 데이터베이스를 처리할 수 있다. 데이터베이스는 클래스로 표현하고, 컬럼은 속성, 레코드는 각 클래스의 인스턴스로 표현한다.

새로 알게 된 점

같이 이야기 하고 싶은 내용

삽질기

url(), path()

django 에서 request 로 들어온 url 과 view 함수를 맵핑하는 기능.

django 2.0 전에는 url()을 사용했으나 정규표현식을 써야하는 불편함에, 2.0 버전 이후 path()로 사용되었다.

url()
urlpatterns = [
    url(r'^$', views.BooksModelView.as_view(), name='index'),
    url(r'^book/(?P<pk>\d+)/$', views.BookDetail.as_view(),    name='book_detail')
]
path()
urlpatterns = [
    path('admin/', admin.site.urls),
    path('bookmark/', BookmarkLV.as_view(), name='index'),
    path('bookmark/<int:pk>/', BookmarkDV.as_view(), name='detail')
]
/ 의 중요성이 존재한다. 놓치지말것…
  • name 안붙혀서 error

개고생 error

  • url slash

    error 조건이 201 != 302 로 나서 원인으로 찾기 어려웠다. 주의 할 것

    urlpatterns = [
        path("", views.home_page),
        path("lists/<int:list_id>/", views.view_list, name="view_list"),
        path("lists/new", views.new_list, name="new_list"),
        path("lists/<int:list_id>/add_item", views.add_item, name="add_item"),
    ]
    

    views

    def new_list(request):
        list_ = List.objects.create()
        Item.objects.create(text=request.POST["item_text"], list=list_)
        # return redirect(f"/lists/{list_.id}")
        return redirect(f"/lists/{list_.id}/")
      
      
    def add_item(request, list_id):
        list_ = List.objects.get(id=list_id)
        Item.objects.create(text=request.POST["item_text"], list=list_)
        # return redirect(f"/lists/{list_.id}")
        return redirect(f"/lists/{list_.id}/")
      
    

이해가 안가는 내용

참조 사이트

https://laravel.com/docs/7.x/csrf https://docs.djangoproject.com/en/dev/ref/csrf/#testing

https://medium.com/@lyoungh2570/django-url%EA%B3%BC-path-f75ec1754460