전체 글

전체 글

    pipenv 사용하기

    python을 사용할때 반드시 염두해 둬야 하는것이 가상환경이다. javascript에는 npm이 있듯이 python에는 pip 가 있다. pip은 python의 패키지를 global 하게 설치한다. 그런데 이러면 프로젝트별 관리가 힘들어진다. 그래서 venv 모듈이라던가 virtualenv 패키지가 사용되어 왔는데 pip + virtualenv = pipenv 이다. 아래와 같이 사용가능하다. $ pip install pipenv $ mkdir ~/project_name $ cd ~/project_name $ pipenv shell $ pipenv check $ exit 가상환경이 잘 구성되고나면 VC 의 Project Root 에는 pipfile 이 만들어진다. 열어보면 가상환경에 설치된 패키지 목록..

    윈도우10 WSL (우분투 터미널 사용하기)

    1. 검색 -> Windows 기능 켜기/끄기 실행 2. 목록에서 Linux용 Windows 하위 시스템 체크 확인 3. WSL 설치 https://docs.microsoft.com/en-us/windows/wsl/install Install WSL Install Windows Subsystem for Linux with the command, wsl --install. Use a Bash terminal on your Windows machine run by your preferred Linux distribution - Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine, and more are available. docs.microsoft.com 4. 각종 ..

    crawling - Headers 사용으로 Bot 차단 피하기

    파이썬으로 크롤링 중에 별다른 이유없이 크롤링이 안될 때는 서버에서 봇감지를 하고 차단한 경우일 때가 있다. 1. 접속 확인을 해보자 - 접속이 잘되는것을 확인. import requests url = 'http://www.crawring_url.com/blablabla/' html = requests.get(url).text 2. 다음으로 print(html)로 확인 했을때 "보안절차를 통과하면 검색서비스를 정상으로 이용할 수 있다"는 종류의 페이지 결과가 나온다면 봇차단이 된것이다. 3. 이럴때 header 정보에 User-Agent를 넣어준다. HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 ..

    django - Questionform

    1. 질문등록 버튼생성 - 질문등록 버튼은 question_list.html에 있어야한다. {% extends 'base.html' %} {% block content %} 질문 등록하기 {% endblock %} 2. URL 매핑 pybo/urls.py 질문등록 - question/create/ 경로를 views.py에 question_create 함수에 넘김. from django.urls import path from . import views app_name = 'pybo' urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='detail'), path('answer/create//', views.ans..

    django - StandardHTML

    1. Base.html 템플릿 파일을 만든다. 지금까지 만든 HTML 템플릿은 표준구조를 가지고 있지 않은 상태이다. 장고에서 부르는 템플릿은 파일마다 기능에 꼭 필요한 구조만 작성하고 반복되는 {% block content %} {% endblock %} css 코드도 모두 Base.html 파일 헤드태그에 넣어준다. 이때 Base.html은 템플릿폴더바로 아래에 저장한다. template/pybo 아님. template 에 저장. 아래형식만 지켜주면된다. {% load static %} {% block content %} /*--- 여기에 다른파일이 삽입되게 된다. ---*/ {% endblock %} 2. question_list.html, question_detail.html은 다음과 같이 수정하..

    django - CSS

    1. static 디렉토리 만들기 (venv)prompt> mkdir static /*--- 생략 ---*/ STATIC_URL = '/static/' STATICFILES_DIRS = [BASE_DIR/'static'] 프로젝트 루트에 스태틱 디렉토리를 만들고난후 config/settings.py 에 스태틱 디렉토리 경로를 추가해준다. static 또한 url이나 template 과 마찬가지로 pybo 앱 디렉토리 하단에 만들면 config/setting.py 수정없이 바로 쓸수 있다. 하지만 이 방법은 앞의 url이나 template 과 마찬가지 이유로 프로젝트 관리를 불편하게 만든다. static 디렉토리에는 img / javascript / css 등이 저장되고 관리된다. (마치 그래픽작업의 As..

    django - Answerform

    1. 답변등록 폼을 만든다. 답변등록폼은 질문내용하단에 달리게 된다. {{ question.subject }} {{ question.content }} {% csrf_token %} 원래 장고 개발시 form 데이터를 전송할때는 장고자체의 폼을 이용한다. 지금은 이대로 사용. {% csrf_token %} 는 form 엘리먼트를 통해 전송된 데이터가 실제로 웹브라우저에서 작성된 데이터인지 판단하는 검사기 역할을 한다. 보안관련 기능이므로 폼을 사용할때는 반드시 함께 넣어주는것이 좋다. 2. 답변등록을 위한 URL을 매핑한다. /*--- 생략 ---*/ urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='det..

    django - Namespace

    1. URL 별칭 사용하기 from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), path('/', views.detail, name='detail'), ] pybo/url.py에 name속성을 사용해서 별칭을 만들어준다. 이렇게 수정하면 /pybo/라는 주소에는 index라는 별칭이, /pybo/2/ 라는 주소에는 detail 이라는 별칭이 생긴다. 2. 템플릿에서 별칭사용하기 /*--- 생략 ---*/ {% for question in question_list %} {{ question.subject }} {% endfor %} /*--- 생략 ---*/ 3. URL 중복방지..

    django - QuestionContent

    1. Question 모델의 id 값을 이용하여 질문내용(views.detail) 출력하기 /* pybo/url.py */ from django.urls import path form . import views urlpattern = [ path('',views.index), path('/',views.detail), ] /pybo/2/가 요청 => views.detail 함수 실행. 2. 질문내용 출력 함수(views.detail) 작성하기 /*----- 생략 -----*/ def detail(request, question_id): """ 질문내용 출력하기 """ question = Question.objects.get(id=question_id) context = {'question': questi..