2017-04-22 3 views
-2

내 API에 대해 몇 가지 테스트를 만들어야합니다. API는 wagtail 페이지를 사용하고 그 내용을 제공합니다. 나는 시험에 대한 데이터베이스를 작성하는 시점에서,하지만 난 항상 내가 할 수있는 방법wagtail을 사용하여 API를 테스트하기위한 가짜 데이터베이스 만들기

ValidationError: {'path': [u'This field cannot be blank.'], 'depth': [u'This field cannot be null.']} 

을 얻기 때문에, 할미새 페이지를 만들 수 아니에요? 루트에서 트리까지 전체 사이트를 만들어야합니까?

+0

[mcve]를 제공해주세요. 정확히 여기에 문제가 무엇인지는 명확하지 않습니다. http POST의 모든 필수 입력란에 데이터를 제공하지 않는 것 같습니다. –

답변

0

depth - 중첩 수준입니다. ROOT 페이지의 레벨은 1이고 메인 페이지의 레벨은 2입니다. 분명히 1 페이지 만 첫 번째와 두 번째 레벨에 있습니다.

path - 이것은 아직 이해하지 못했던 특정 값입니다.

루트 페이지 ( depth = 1)이 경로 갖는다

: 0001,

제 중첩 단계 (depth = 2)의 메인 페이지 00010001 경로를 가진다.

세 번째 중첩 수준 (= 3 depth)의 첫 번째 페이지는 경로가 000100010001

나는 오랫동안 그것을 않았기 때문에 나는, 나는 당신에게 작동 조언을 보장 할 수 없습니다 그러나 경우 동일한 중첩 수준에서 가짜 페이지를 생성하려면 경로를 변경하고 마지막 숫자에 +1을 추가하고 깊이를 변경하지 않고 변경하면됩니다.

예에 의해

:

from yourapp.models import FakePage 
k = 1 
for i in range(5): 
    k = k + 1 
    page = FakePage(
    title = ('faketitle{}').format(k), 
    path = ('{0:04}').format(k) 
    depth = 3, 
    ) 
    page.save() 

을하지만 더 좋은 방법이있다 :

from wagtail.wagtailcore.models import Page 
from yourapp.models import FakePage 

pages = Page.objects.all() # Get all pages 

page = Page.objects.get(pk=3) # For example, take a page with pk = 3 

fakepage = FakePage(title='fakepage title') # Create the desired page 

page.add_child(instance=fakepage) # Add children page to the parrent page 

이 경우, 당신은 깊이와 경로에 대해 걱정할 필요가 없습니다.