Django-rest-framework: 3.9์—์„œ 3.10์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ include_docs_urls์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•จ

์— ๋งŒ๋“  2019๋…„ 07์›” 19์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: encode/django-rest-framework

์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • [ ] Django REST ํ”„๋ ˆ์ž„์›Œํฌ์˜ master ๋ถ„๊ธฐ์— ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • [x] ๊ณต๊ฐœ ํ‹ฐ์ผ“๊ณผ ๋น„๊ณต๊ฐœ ํ‹ฐ์ผ“ ๋ชจ๋‘์—์„œ ์œ ์‚ฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ์ง€๋งŒ ์ค‘๋ณต์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • [x] ์ด๊ฒƒ์€ ์‚ฌ์šฉ ์งˆ๋ฌธ์ด ์•„๋‹™๋‹ˆ๋‹ค. (๋Œ€์‹  ํ† ๋ก  ๊ทธ๋ฃน์œผ๋กœ ๋ณด๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)
  • [x] ์ด๊ฒƒ์€ ํƒ€์‚ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ์ œ3์ž ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ์˜ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.)
  • [x] ๋ฌธ์ œ๋ฅผ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • [ ] ํ’€ ๋ฆฌํ€˜์ŠคํŠธ์— ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํฌํ•จ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค. (๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์—๋„ ๋ฌธ์ œ๋ฅผ ์ˆ˜๋ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

์žฌํ˜„ ๋‹จ๊ณ„

djangorestframework==3.10.0 ์‚ฌ์šฉ

urls.py :

from django.urls import path
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    path("docs/", include_docs_urls(title="Platinum API docs")),
]

๋ธŒ๋ผ์šฐ์ €์—์„œ /docs/ ๋ฅผ ๋ฐฉ๋ฌธํ•˜์‹ญ์‹œ์˜ค.

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™

์ถฉ๋Œ์ด ์—†์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ํ–‰๋™

2019-07-19 11:41:21,446 [django.request] [ERROR] Internal Server Error: /docs/
Traceback (most recent call last):
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/views.py", line 497, in dispatch
    response = self.handle_exception(exc)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/schemas/views.py", line 48, in handle_exception
    return super().handle_exception(exc)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/views.py", line 457, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/views.py", line 468, in raise_uncaught_exception
    raise exc
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/views.py", line 494, in dispatch
    response = handler(request, *args, **kwargs)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/schemas/views.py", line 37, in get
    schema = self.schema_generator.get_schema(request, self.public)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/schemas/coreapi.py", line 153, in get_schema
    links = self.get_links(None if public else request)
  File "/home/thnee/.pyenv/versions/lookatech-platinum/lib/python3.6/site-packages/rest_framework/schemas/coreapi.py", line 140, in get_links
    link = view.schema.get_link(path, method, base_url=self.url)
AttributeError: 'AutoSchema' object has no attribute 'get_link'
2019-07-19 11:41:21,449 [django.server] [ERROR] "GET /docs/ HTTP/1.1" 500 27

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

#6809์˜ ๋ณต์ œํ’ˆ์ž…๋‹ˆ๋‹ค.

CoreAPI ๊ณ„์† ์‚ฌ์šฉ ์— ๋Œ€ํ•œ 3.10 ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

๋ฒ„์ „ 3.10.1๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. 3.9.4๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋Š” coreapi 2.3.3 ๋ฐ django 2.2.3์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

#6809์˜ ๋ณต์ œํ’ˆ์ž…๋‹ˆ๋‹ค.

CoreAPI ๊ณ„์† ์‚ฌ์šฉ ์— ๋Œ€ํ•œ 3.10 ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์— ๋ผ์ธ์„ ์ถ”๊ฐ€

ํ”„๋กœ์ ํŠธ/์„ค์ •.py

REST_FRAMEWORK = { ... 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' }

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰