[PYTHON] 좋아하는 장고 팁 및 기능?
PYTHON좋아하는 장고 팁 및 기능?
질문 시리즈 'Hidden features of ...'에서 영감을 얻어, 내가 좋아하는 Django 팁이나 덜 알려져 있지만 덜 유용한 기능에 대해 듣고 싶습니다.
해결법
-
==============================
1.나는 단지 나 자신으로부터의 팁으로 시작할 것이다 :)
나는 단지 나 자신으로부터의 팁으로 시작할 것이다 :)
하드 코드 된 dirnames를 피하려면 settings.py에서 os.path.dirname ()을 사용하십시오.
다른 위치에서 프로젝트를 실행하려면 settings.py에서 경로를 하드 코딩하지 마십시오. 템플릿과 정적 파일이 Django 프로젝트 디렉토리에있는 경우 settings.py에서 다음 코드를 사용하십시오.
# settings.py import os PROJECT_DIR = os.path.dirname(__file__) ... STATIC_DOC_ROOT = os.path.join(PROJECT_DIR, "static") ... TEMPLATE_DIRS = ( os.path.join(PROJECT_DIR, "templates"), )
크레딧 : 스크린 캐스트 'Django From the Ground Up'에서이 팁을 얻었습니다.
-
==============================
2.Django Command Extensions와 pygraphviz를 설치하고 다음 명령을 실행하여 정말 멋진 Django 모델 시각화를 얻습니다.
Django Command Extensions와 pygraphviz를 설치하고 다음 명령을 실행하여 정말 멋진 Django 모델 시각화를 얻습니다.
./manage.py graph_models -a -g -o my_project.png
-
==============================
3.render_to_response 대신 django-annoying의 render_to 데코레이터를 사용하십시오.
render_to_response 대신 django-annoying의 render_to 데코레이터를 사용하십시오.
@render_to('template.html') def foo(request): bars = Bar.objects.all() if request.user.is_authenticated(): return HttpResponseRedirect("/some/url/") else: return {'bars': bars} # equals to def foo(request): bars = Bar.objects.all() if request.user.is_authenticated(): return HttpResponseRedirect("/some/url/") else: return render_to_response('template.html', {'bars': bars}, context_instance=RequestContext(request))
HttpResponse를 반환하면 (예 : 리디렉션) 데코레이터를 단락시키고 예상대로 작동한다는 점을 지적하여 편집했습니다.
-
==============================
4.내 사이트의 템플릿 전체에 사용하는 맞춤 태그 집합이 있습니다. 자동로드하는 방법 (DRY, 기억 하시겠습니까?)을 찾으면서 다음과 같은 것을 발견했습니다.
내 사이트의 템플릿 전체에 사용하는 맞춤 태그 집합이 있습니다. 자동로드하는 방법 (DRY, 기억 하시겠습니까?)을 찾으면서 다음과 같은 것을 발견했습니다.
from django import template template.add_to_builtins('project.app.templatetags.custom_tag_module')
이것을 기본으로로드 된 모듈 (예 : 기본 urlconf)에 넣으면 {% load custom_tag_module %}을 사용하지 않고 모든 템플릿에서 사용할 수있는 맞춤 태그 모듈의 태그와 필터를 갖게됩니다.
template.add_to_builtins ()에 전달 된 인수는 모든 모듈 경로 일 수 있습니다. 사용자 정의 태그 모듈은 특정 응용 프로그램에 존재할 필요가 없습니다. 예를 들어 프로젝트의 루트 디렉토리에있는 모듈 일 수도 있습니다 (예 : 'project.custom_tag_module').
-
==============================
5.Virtualenv + Python = 여러 장고 프로젝트를 작업하고 있고 모두 같은 버전의 장고 / 응용 프로그램에 의존하지 않을 가능성이있을 때 생명의 은인입니다.
Virtualenv + Python = 여러 장고 프로젝트를 작업하고 있고 모두 같은 버전의 장고 / 응용 프로그램에 의존하지 않을 가능성이있을 때 생명의 은인입니다.
-
==============================
6.URL을 하드 코딩하지 마세요!
URL을 하드 코딩하지 마세요!
대신 url 이름을 사용하고 역방향 함수를 사용하여 URL 자체를 가져옵니다.
URL 매핑을 정의 할 때 URL에 이름을 지정하십시오.
urlpatterns += ('project.application.views' url( r'^something/$', 'view_function', name="url-name" ), .... )
이름이 URL마다 고유해야합니다.
일반적으로 일관된 형식 인 "프로젝트 - 애플리케이션보기"를 사용합니다. 스레드보기를위한 "cbx-forum-thread".
업데이트 (뻔뻔하게 ayaz의 추가를 훔친다) :
이 이름은 url 태그가있는 템플리트에서 사용할 수 있습니다.
-
==============================
7.django 디버그 도구 모음을 사용하십시오. 예를 들어 뷰를 렌더링하는 동안 수행 된 모든 SQL 쿼리를 볼 수 있으며 그 중 일부에 대한 스택 추적도 볼 수 있습니다.
django 디버그 도구 모음을 사용하십시오. 예를 들어 뷰를 렌더링하는 동안 수행 된 모든 SQL 쿼리를 볼 수 있으며 그 중 일부에 대한 스택 추적도 볼 수 있습니다.
-
==============================
8.자신의 로그인 페이지를 작성하지 마십시오. django.contrib.auth를 사용하고 있다면.
자신의 로그인 페이지를 작성하지 마십시오. django.contrib.auth를 사용하고 있다면.
실제로 django.contrib.admin을 사용하고 있고 django.template.loaders.app_directories.load_template_source가 템플릿 로더에 있으면 템플릿을 무료로 사용할 수 있다는 사실이 더러운 비밀입니다.
# somewhere in urls.py urlpatterns += patterns('django.contrib.auth', (r'^accounts/login/$','views.login', {'template_name': 'admin/login.html'}), (r'^accounts/logout/$','views.logout'), )
-
==============================
9.다른 사용자 모델이 있고 포함 시키려한다고 가정 해 보겠습니다. 모든 반응에서. 대신 이렇게 :
다른 사용자 모델이 있고 포함 시키려한다고 가정 해 보겠습니다. 모든 반응에서. 대신 이렇게 :
def myview(request, arg, arg2=None, template='my/template.html'): ''' My view... ''' response = dict() myuser = MyUser.objects.get(user=request.user) response['my_user'] = myuser ... return render_to_response(template, response, context_instance=RequestContext(request))
컨텍스트 프로세스를 사용하면 변수를 변수에 전달할 수 있습니다. 템플릿. 나는 일반적으로 'my_project / apps / core / context.py :
def my_context(request): try: return dict(my_user=MyUser.objects.get(user=request.user)) except ObjectNotFound: return dict(my_user='')
settings.py에서 TEMPLATE_CONTEXT_PROCESSORS에 다음 행을 추가하십시오.
TEMPLATE_CONTEXT_PROCESSORS = ( 'my_project.apps.core.context.my_context', ... )
요청이있을 때마다 my_user 키가 자동으로 포함됩니다.
몇 달 전에이 블로그 게시물을 작성하여 잘라 붙여 넣으려고합니다.
상자에서 Django는 몇 가지 신호를 제공합니다. 믿을 수 없을 정도로 유용합니다. 너는 사전과 일을 할 수있는 능력이있다. 사후 저장, 초기화, 삭제 또는 심지어 요청이있을 때 처리됨. 따라서 개념 및 어떻게 사용되는지를 보여줍니다. 우리가 블로그를 가지고 있다고 해봅시다.
from django.utils.translation import ugettext_lazy as _ class Post(models.Model): title = models.CharField(_('title'), max_length=255) body = models.TextField(_('body')) created = models.DateTimeField(auto_now_add=True)
그래서 어떻게 든 당신은 많은 blog-pinging 중의 1 개에 통지하고 싶다. 우리는 새로운 게시물을 만들었고 가장 최근의 게시물 캐시, 그리고 그것에 대해 트위터. 신호를 가지고 있으면 모든 것을 추가 할 필요없이이 모든 것을 할 수있는 능력 메소드를 Post 클래스에 추가합니다.
import twitter from django.core.cache import cache from django.db.models.signals import post_save from django.conf import settings def posted_blog(sender, created=None, instance=None, **kwargs): ''' Listens for a blog post to save and alerts some services. ''' if (created and instance is not None): tweet = 'New blog post! %s' instance.title t = twitter.PostUpdate(settings.TWITTER_USER, settings.TWITTER_PASSWD, tweet) cache.set(instance.cache_key, instance, 60*5) # send pingbacks # ... # whatever else else: cache.delete(instance.cache_key) post_save.connect(posted_blog, sender=Post)
우리는 그 기능을 정의하고 함수를 포스트 모델에 연결하는 post_init 신호 저장된 후에 실행하십시오.
-
==============================
10.내가 밖으로 시작했을 때 나는 Paginator가 있다는 것을 몰랐다. 당신이 그 존재를 알고 있는지 확인하라 !!
내가 밖으로 시작했을 때 나는 Paginator가 있다는 것을 몰랐다. 당신이 그 존재를 알고 있는지 확인하라 !!
-
==============================
11.IPython을 사용하여 모든 레벨에서 코드로 이동하고 IPython의 힘을 사용하여 디버깅하십시오. IPython을 설치하고 나면 디버깅 할 위치에이 코드를 넣으십시오.
IPython을 사용하여 모든 레벨에서 코드로 이동하고 IPython의 힘을 사용하여 디버깅하십시오. IPython을 설치하고 나면 디버깅 할 위치에이 코드를 넣으십시오.
from IPython.Shell import IPShellEmbed; IPShellEmbed()()
그런 다음 페이지를 새로 고치고 runserver 창으로 이동하면 대화 형 IPython 창이 열립니다.
필자는 TextMate에 스 니펫을 설정하여 ipshell을 입력하고 탭을 누르기 만하면됩니다. 나는 그것 없이는 살 수 없었다.
-
==============================
12.개발 서버에 SMTP를 실제로 설치하지 않으려는 경우 출력되는 SMTP 서버를 실행하십시오.
개발 서버에 SMTP를 실제로 설치하지 않으려는 경우 출력되는 SMTP 서버를 실행하십시오.
명령 줄 :
python -m smtpd -n -c DebuggingServer localhost:1025
-
==============================
13.django-admin 설명서에서 :
django-admin 설명서에서 :
Bash 쉘을 사용한다면, 장고 배포판의 extras / django_bash_completion에있는 Django bash 완성 스크립트를 설치하십시오. django-admin.py 및 manage.py 명령의 탭 완성을 가능하게하므로 예를 들어 ...
-
==============================
14.django_extensions와 함께 제공되는 ./manage.py runserver_plus facilty는 정말 대단합니다.
django_extensions와 함께 제공되는 ./manage.py runserver_plus facilty는 정말 대단합니다.
특히 Werkzeug 디버거를 사용하여 스택의 각 지점에 대한 대화식 디버깅 콘솔을 만드는 고급 디버그 페이지를 만듭니다 (스크린 샷 참조). 또한 객체 / 프레임에 대한 정보를 표시하는 매우 유용한 편리한 디버깅 메소드 dump ()를 제공합니다.
설치하려면 pip를 사용할 수 있습니다.
pip install django_extensions pip install Werkzeug
그런 다음 settings.py의 INSTALLED_APPS 튜플에 'django_extensions'를 추가하고 새 확장을 사용하여 개발 서버를 시작하십시오.
./manage.py runserver_plus
이렇게하면 디버깅 방식이 바뀝니다.
-
==============================
15.저는 Python 디버거 pdb를 사용하여 Django 프로젝트를 디버깅하고 싶습니다.
저는 Python 디버거 pdb를 사용하여 Django 프로젝트를 디버깅하고 싶습니다.
이것은 그것을 사용하는 방법을 배우기위한 유용한 링크입니다 : http://www.ferg.org/papers/debugging_in_python.html
-
==============================
16.Django와 다른 응용 프로그램간에 데이터를 교환하려고 할 때 request.raw_post_data는 좋은 친구입니다. 이를 사용하여 XML 데이터를 수신하고 사용자 지정 처리합니다.
Django와 다른 응용 프로그램간에 데이터를 교환하려고 할 때 request.raw_post_data는 좋은 친구입니다. 이를 사용하여 XML 데이터를 수신하고 사용자 지정 처리합니다.
선적 서류 비치: http://docs.djangoproject.com/en/dev/ref/request-response/
-
==============================
17.디버그 정보를 덤프하려면보기 코드에 어설 션 False를 추가하십시오.
디버그 정보를 덤프하려면보기 코드에 어설 션 False를 추가하십시오.
-
==============================
18.Django와 함께 Jinja2를 사용하십시오.
Django와 함께 Jinja2를 사용하십시오.
Django 템플릿 언어가 (나 같은) 매우 제한적이라면, 그걸로 고생 할 필요가 없다. 장고는 유연하고 템플릿 언어는 나머지 시스템과 느슨하게 결합되어 있으므로 다른 템플릿 언어를 플러그인하고 HTTP 응답을 렌더링하는 데 사용하십시오!
Jinja2를 사용합니다. 장고 템플릿 언어의 파워 업 버전과 거의 같으며, 동일한 구문을 사용하며 if 문에서 표현식을 사용할 수 있습니다! if_item_in_list와 같은 맞춤 if 태그를 만들지 않아도됩니다! 단순히 % {목록 %의 항목 인 경우} 또는 {% if object.field <10 %}를 말할 수 있습니다.
하지만 그건 전부가 아닙니다. 그것은 템플릿 생성을 쉽게하기위한 더 많은 기능을 가지고 있습니다.
-
==============================
19.이것은 Django URL 이름과 역 URL 전달에 대한 위의 응답에 추가됩니다.
이것은 Django URL 이름과 역 URL 전달에 대한 위의 응답에 추가됩니다.
URL 이름은 템플릿 내에서 효과적으로 사용할 수도 있습니다. 예를 들어, 주어진 URL 패턴의 경우 :
url(r'(?P<project_id>\d+)/team/$', 'project_team', name='project_team')
템플릿에서 다음을 사용할 수 있습니다.
<a href="{% url project_team project.id %}">Team</a>
-
==============================
20.Django의 "views"는 HttpResponse를 반환하는 호출 가능 일 뿐이므로 Ruby on Rails 및 기타 프레임 워크와 같은 클래스 기반보기를 쉽게 만들 수 있습니다.
Django의 "views"는 HttpResponse를 반환하는 호출 가능 일 뿐이므로 Ruby on Rails 및 기타 프레임 워크와 같은 클래스 기반보기를 쉽게 만들 수 있습니다.
클래스 기반 뷰를 만드는 방법에는 여러 가지가 있습니다.
from django import http class RestView(object): methods = ('GET', 'HEAD') @classmethod def dispatch(cls, request, *args, **kwargs): resource = cls() if request.method.lower() not in (method.lower() for method in resource.methods): return http.HttpResponseNotAllowed(resource.methods) try: method = getattr(resource, request.method.lower()) except AttributeError: raise Exception("View method `%s` does not exist." % request.method.lower()) if not callable(method): raise Exception("View method `%s` is not callable." % request.method.lower()) return method(request, *args, **kwargs) def get(self, request, *args, **kwargs): return http.HttpResponse() def head(self, request, *args, **kwargs): response = self.get(request, *args, **kwargs) response.content = '' return response
기본보기에서 조건부 요청 처리 및 권한 부여와 같은 기타 모든 작업을 추가 할 수 있습니다.
일단 당신의 견해를 설정하면 urls.py는 다음과 같이 보입니다 :
from django.conf.urls.defaults import * from views import MyRestView urlpatterns = patterns('', (r'^restview/', MyRestView.dispatch), )
-
==============================
21.render_to_response를 사용하여 컨텍스트를 템플릿에 바인딩하고 렌더 (대신 Django 문서가 일반적으로 보여주는 것)하는 대신 direct_to_template이라는 일반 뷰를 사용하십시오. render_to_response가하는 것과 같은 일을하지만 템플릿 컨텍스트에 RequestContext를 자동으로 추가하여 컨텍스트 프로세서를 암시 적으로 사용할 수있게합니다. render_to_response를 사용하여 수동으로이 작업을 수행 할 수 있지만 그 이유는 무엇입니까? 그것은 기억하기위한 또 다른 단계이고 또 다른 LOC입니다. 컨텍스트 프로세서를 사용하는 것 외에도 템플릿에 RequestContext를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
render_to_response를 사용하여 컨텍스트를 템플릿에 바인딩하고 렌더 (대신 Django 문서가 일반적으로 보여주는 것)하는 대신 direct_to_template이라는 일반 뷰를 사용하십시오. render_to_response가하는 것과 같은 일을하지만 템플릿 컨텍스트에 RequestContext를 자동으로 추가하여 컨텍스트 프로세서를 암시 적으로 사용할 수있게합니다. render_to_response를 사용하여 수동으로이 작업을 수행 할 수 있지만 그 이유는 무엇입니까? 그것은 기억하기위한 또 다른 단계이고 또 다른 LOC입니다. 컨텍스트 프로세서를 사용하는 것 외에도 템플릿에 RequestContext를 사용하면 다음과 같은 작업을 수행 할 수 있습니다.
<a href="{{MEDIA_URL}}images/frog.jpg">A frog</a>
이것은 매우 유용합니다. 사실 일반적으로 일반적인 견해에서 +1. Django 문서는 대부분 간단한 응용 프로그램에 대한 views.py 파일을 가지고 있지 않은 단축키로 표시하지만 사용자 고유의보기 기능 내에서 사용할 수도 있습니다.
from django.views.generic import simple def article_detail(request, slug=None): article = get_object_or_404(Article, slug=slug) return simple.direct_to_template(request, template="articles/article_detail.html", extra_context={'article': article} )
-
==============================
22.나는 그 질문에 답할만한 평판이 충분하지 않지만 진자를 사용하려고한다면 장고는 템플릿 블록 이름에서 '-'문자를 지원하지 않는다는 점에 유의해야한다. 이로 인해 많은 문제가 발생했고 생성 된 매우 모호한 오류 메시지를 추적하는 데 시간을 낭비했습니다.
나는 그 질문에 답할만한 평판이 충분하지 않지만 진자를 사용하려고한다면 장고는 템플릿 블록 이름에서 '-'문자를 지원하지 않는다는 점에 유의해야한다. 이로 인해 많은 문제가 발생했고 생성 된 매우 모호한 오류 메시지를 추적하는 데 시간을 낭비했습니다.
-
==============================
23.webdesign 앱은 웹 사이트 디자인을 시작할 때 매우 유용합니다. 가져온 다음에는이를 추가하여 샘플 텍스트를 생성 할 수 있습니다.
webdesign 앱은 웹 사이트 디자인을 시작할 때 매우 유용합니다. 가져온 다음에는이를 추가하여 샘플 텍스트를 생성 할 수 있습니다.
{% load webdesign %} {% lorem 5 p %}
-
==============================
24.django.db.models.get_model을 사용하면 모델을 가져 오지 않고 검색 할 수 있습니다.
django.db.models.get_model을 사용하면 모델을 가져 오지 않고 검색 할 수 있습니다.
James는 "Django tips : 더 나은 템플릿 태그 작성 - 반복 4"가 얼마나 편리한지를 보여줍니다.
-
==============================
25."manage.py runserver"로 실행할 수있는 개발 서버가 있다는 것을 모두 알고 있지만 정적 파일 (CSS / JS / IMG)을 제공하기위한 개발 뷰가 있다는 것을 알고 계셨습니까?
"manage.py runserver"로 실행할 수있는 개발 서버가 있다는 것을 모두 알고 있지만 정적 파일 (CSS / JS / IMG)을 제공하기위한 개발 뷰가 있다는 것을 알고 계셨습니까?
Django는 정적 파일을 제공하는 방법이 전혀 없기 때문에 처음에는 새로운 사람들이 의아해합니다. 이것은 dev 팀이 실생활 웹 서버의 작업이라고 생각하기 때문입니다.
그러나 개발할 때 Apache + mod_wisgi를 설정하고 싶지는 않을 것입니다. 그런 다음 urls.py에 다음을 추가하면됩니다.
(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': '/path/to/media'}),
CSS / JS / IMG는 www.yoursite.com/site_media/에서 사용할 수 있습니다.
물론 프로덕션 환경에서는 사용하지 마십시오.
-
==============================
26.나는 sorl-thumbnails 앱에 대한 문서에서 이것을 배웠다. 템플리트 태그의 "as"키워드를 사용하여 템플리트의 다른 위치에서 호출 결과를 사용할 수 있습니다.
나는 sorl-thumbnails 앱에 대한 문서에서 이것을 배웠다. 템플리트 태그의 "as"키워드를 사용하여 템플리트의 다른 위치에서 호출 결과를 사용할 수 있습니다.
예 :
{% url image-processor uid as img_src %} <img src="{% thumbnail img_src 100x100 %}"/>
이것은 Django templatetag 문서에서 언급되었지만 루프에 대해서만 언급되었습니다. 그들은 당신이 다른 곳 (어디에서?)에서도 이것을 사용할 수 있다고 말하지 않습니다.
-
==============================
27.django.views.generic.list_detail.object_list - 페이지 매김에 대한 모든 논리 및 템플릿 변수를 제공합니다 (필자는 천천히 작성한 것 중 하나임). 래핑하면 필요한 모든 논리를 사용할 수 있습니다. 이 보석으로 인해 내 "검색 결과"페이지에 여러 시간의 디버깅 오류가 저장되어 프로세스에서보기 코드가 더 깨끗해졌습니다.
django.views.generic.list_detail.object_list - 페이지 매김에 대한 모든 논리 및 템플릿 변수를 제공합니다 (필자는 천천히 작성한 것 중 하나임). 래핑하면 필요한 모든 논리를 사용할 수 있습니다. 이 보석으로 인해 내 "검색 결과"페이지에 여러 시간의 디버깅 오류가 저장되어 프로세스에서보기 코드가 더 깨끗해졌습니다.
-
==============================
28.PyCharm IDE는 Django를 기본적으로 지원하므로 코드를 작성하고 특히 디버그 할 수있는 좋은 환경입니다.
PyCharm IDE는 Django를 기본적으로 지원하므로 코드를 작성하고 특히 디버그 할 수있는 좋은 환경입니다.
-
==============================
29.XML REST API 백엔드 (SQL 대신)를 사용하는 Django 모델을 생성하려면 xml_models를 사용하십시오. 이것은 특히 써드 파티 API를 모델링 할 때 매우 유용합니다 - 익숙한 QuerySet 구문을 모두 얻을 수 있습니다. PyPI에서 설치할 수 있습니다.
XML REST API 백엔드 (SQL 대신)를 사용하는 Django 모델을 생성하려면 xml_models를 사용하십시오. 이것은 특히 써드 파티 API를 모델링 할 때 매우 유용합니다 - 익숙한 QuerySet 구문을 모두 얻을 수 있습니다. PyPI에서 설치할 수 있습니다.
API의 XML :
<profile id=4> <email>joe@example.com</email> <first_name>Joe</first_name> <last_name>Example</last_name> <date_of_birth>1975-05-15</date_of_birth> </profile>
그리고 지금은 파이썬에서 :
class Profile(xml_models.Model): user_id = xml_models.IntField(xpath='/profile/@id') email = xml_models.CharField(xpath='/profile/email') first = xml_models.CharField(xpath='/profile/first_name') last = xml_models.CharField(xpath='/profile/last_name') birthday = xml_models.DateField(xpath='/profile/date_of_birth') finders = { (user_id,): settings.API_URL +'/api/v1/profile/userid/%s', (email,): settings.API_URL +'/api/v1/profile/email/%s', } profile = Profile.objects.get(user_id=4) print profile.email # would print 'joe@example.com'
또한 관계 및 콜렉션을 처리 할 수 있습니다. 많이 사용되는 생산 코드에서 매일 사용하므로 베타 버전이라도 매우 유용합니다. 또한 테스트에 사용할 수있는 스텁 세트도 있습니다.
(면책 조항 : 나는이 도서관의 저자는 아니지만, 지금은 커미터이다. 약간의 사소한 커밋을했다)
-
==============================
30.데이터베이스 마이그레이션을 사용하십시오. 남쪽을 사용하십시오.
데이터베이스 마이그레이션을 사용하십시오. 남쪽을 사용하십시오.
from https://stackoverflow.com/questions/550632/favorite-django-tips-features by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] django에서 비즈니스 로직과 데이터 액세스 분리 (0) | 2018.10.16 |
---|---|
[PYTHON] 문자열 바꾸기가 작동하지 않는 것 같습니다. (0) | 2018.10.15 |
[PYTHON] Jupyter 노트북을 통해 GitHub에서 모듈 설치 (0) | 2018.10.15 |
[PYTHON] 파이썬 while Javascript로 루프 변환 [duplicate] (0) | 2018.10.15 |
[PYTHON] Builtin 함수가 Spyder와 작동하지 않습니다. (0) | 2018.10.15 |