LostCatBox

기타 꿀팁과 햇갈리는 것 정리

Word count: 864Reading time: 5 min
2019/10/19 59 Share

정리가 필요한 것


Rest api>> django-rest-framwork 학습함 >> 간단히 말해서 개발자가 데이터를 제공해줄때의 보편화된 양식

터미널에서


1
2
3
4
5
6
7
8
9
pip freeze #현재 설치된 버전들 모두 볼수있다
pip freeze>requirements.txt #현재 설치된 버전들을 txt파일로 저장함
pip install -r requirements.txt #패키지 이름하고 해당 버전 읽어서 다 다운로드함

Cat requirements.txt #파일 내용 출력

cv requirements.txt ../cbv #복붙 기능 상위폴더에 cbv폴더안에

mv requirements.txt ../cbv #이동 기능 상위폴더에 cbv폴더안에

파일 내용을 보고싶을때


1
vi <파일이름>

i를 누르면 edit mode
다 수정후 :wq 로 나간다 (저장후 끄기)

Git

자세히

파이참에서

1
2
3
4
5
6
7
8
9

#프로젝트내에서 파일찾기임
shift+shift

# 클래스안에서 재정의할수있는 것들 보여줌
control + o

# import할것 자동으로 찾아서 입력해줌
option + enter

Django

1
python3 manage.py sqlmigrate blog 0001_initial sql언어로 뭐가 실행될지 알려준다

Form

Db와 model이 이어진것처럼

frontend와 form이 이어짐

form의 특징 (딱 3가지만 기억하자)!

  • 입력폼을 생성: .as_table(), .as_p(), .as_ul() 기본제공

  • 입력폼 값 검증(validation) 및 값 변환 (프론트엔드)

  • 검증을 통과한 값들을 사전타입(cleaned_data이름으로 제공)

  • 과정: 즉, get요청으로 처음으로 form = FormClass()>>입력폼 호출됨>>유저가 입력>>post요청>>form = FormClass(request.POST, request.FILES)를 받고>>form.is_valid() 유효성검사>>

    • valid판정시 form.cleaned_data통해 필드별 값 제공받음>> form.save()로 저장후 다른 URL로 이동
    • invalid판정시 form.errors통해 필드별 오류메세지 제공받음>>오류 메세지와 함께 입력 html폼을 노출
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#뷰 함수에서 구현
def post_new(request):
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
post = Post(**self.cleaned_data)
post.save()
return redirect(post)

else:
form = PostForm()
return render(request, 'blog/post_form.html', {
'form': form,
})

Tip: 꼭 return render(~~)가 있어서 템플릿 또한 필요하고 form을 넘겨서 form.as_table()으로 입력폼을 생성할수있도록 해주자

1
2
3
4
5
6
7
8
#form의 html예시
<table>
<form action="" method="post">
{% csrf_token %}
<table>{{ form.as_table }}</table> #이게 오류를 불러와줌, Form에 각 필드가 테이블 행으로 렌더링됨!!!
<input type="submit" />
</form>
</table>

모델에 값저장방법4가지

나머지 요약정리

html

get

Method=”GET”은 헤더만 존재하며 urlencoded방식으로만 전달되며

url뒤쪽에 ?~로 붙는다

post

Method=”POST”는 기본적으로 바디 둘다 존재하며

  • urlencoded방식

    get과 같은 전달방식이므로 body에 위에 url?뒤쪽에 전부 같은 방식으로 붙는다

  • multipart/form-data 방식(파일정말 전송할려면 이방법말고없다)

1
2
3
4
5
6
-----------------------------14973275531370807725960869059 #여기부터바디
Content-Disposition: form-data; name="title"
title
-----------------------------14973275531370807725960869059
Content-Disposition: form-data; name="content"
(생략 ...)

식으로 아예 다른방식으로 바디에 붙는다.

Django-Bootstrap3

bootstrap3 스타일로 HTML을 생성해주는 template tags 제공 설치 쉘>

1
2
 pip3 install django-bootstrap3
settings.INSTALLED_APPS 에 "bootstrap3"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#원하는 템플릿에서 

{% raw %}

{# bootstrap3 라이브러리 로드 #}
{% load bootstrap3 %}
{# bootstrap3 라이브러리를 통해 css/javascript 태그 출력 #}
{% bootstrap_css %}
{% bootstrap_javascript %}
<form action="" method="post" class="form">
{% csrf_token %}
{% bootstrap_form form %} <!-- bootstrap3 라이브러리를 통해 Form Render -->
<input type="submit" class="btn btn-primary btn-lg" />
</form>

{% endraw %}

자세히

Python 문법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[표현식 for 항목 in 반복가능객체 if 조건문]
조금 복잡하지만 for문을 2개 이상 사용하는 것도 가능하다. for문을 여러 개 사용할 때의 문법은 다음과 같다.

[표현식 for 항목1 in 반복가능객체1 if 조건문1
for 항목2 in 반복가능객체2 if 조건문2
...
for 항목n in 반복가능객체n if 조건문n]
만약 구구단의 모든 결과를 리스트에 담고 싶다면 리스트 내포를 사용하여 다음과 같이 간단하게 구현할 수도 있다.

>>> result = [x*y for x in range(2,10)
... for y in range(1,10)]
>>> print(result)
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16,
20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42
, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72,
9, 18, 27, 36, 45, 54, 63, 72, 81]
지금껏 우리는 프로그램 흐름을 제어하는 if문, while문, for문에 대해 알아보았다. 아마도 여러분은 while문과 for문을 보면서 2가지가 아주 비슷하다는 느낌을 받았을 것이다. 실제로 for문을 사용한 부분을 while문으로 바꿀 수 있는 경우도 많고, while문을 for문으로 바꾸어서 사용할 수 있는 경우도 많다.

외부망에서 localhost

Ngrok사용하기

NAT와 Proxy기반으로 동작해서 localhost에서 어딘지 알 수 없는 서버(이하 A)에 그 정보를 전송하고, 퍼블릭 환경에서 로컬호스트로 접근하기 위해서는 A서버에 request를 보내면 그것을 내 localhost로 proxy(중계)해준다고 생각하면 된다.

?scode=mtistory2&fname=https%3A%2F%2Fk.kakaocdn.net%2Fdn%2FcSYoTr%2FbtqvCJOp5tX%2FXpceteh0Cj1dnbd9NwYL9K%2Fimg

설치하기

스크린샷 2020-01-31 오전 12.55.11

1
2
3
4
5
6
7
8
9
# 3번과정은 계정의 인증이 ngrok.yml파일에 추가되고, 더많은 기능들 대시 보드에 나열됨

$ ./ngrok authtoken 1X7aYWPuFKYzvewLbnNoMo71kZi_2uzbB966Q4TU5cpgNPKhy

# 설명서 읽기
$ ./ngrok help

# 포트 2802에서 HTTP 터널을 시작하려면 다음을 실행하십시오.
$ ./ngrok http 2802

마지막로 실행하면 forwarding 을 무슨서버에서 무슨서버로 해주는지 나오고 이와 동일한 로컬주소를 만들어서 runserver해주면된다.

CATALOG
  1. 1. 정리가 필요한 것
  2. 2. 터미널에서
  3. 3. Git
  4. 4. 파이참에서
  5. 5. Django
  6. 6. html
  7. 7. Django-Bootstrap3
  8. 8. Python 문법
  9. 9. 외부망에서 localhost