[Django 03] include()와 path()

REST API를 쓰고 싶다는 생각이였는데, 어쩌다보니 장고로 들어와버렸다.
파이썬을 공부하다보니 자연스럽게 흘러들어왔는데, 초보이지만 나름 정리를 하면서 내용을 공유하고 싶어서 글을 작성한다.

내용은 튜토리얼을 정리한 수준이다.

어느정도 시간이 지나고 나면 좋은 글이 나올수도 있겠지..

"""mysite URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    # 최상위 URL에서 polls.urls 모듈을 바라보게 설정
    # include() 함수는 다른 URLconf들을 참조할 수 있도록 도와준다.
    # - URL의 그 시점까지 일치하는 부분을 잘라내고, 
    # 남은 문자열 부분을 후속 처리를 위해 include된 URLconf로 전달

    # path()는 route와 view, kwargs, name을 사용 가능
    # - route : URL 패턴을 가진 문자열. 일치하는 패턴을 찾을 때 까지 요청된 URL을 
    #   각 패턴과 리스트의 순서대로 비교한다.
    #   패턴들은 GET이나 POST의 매개 변수들, 혹은 도메인 이름을 검색하지 않는다.
    #   https://www.example.com/myapp/이 요청될 경우, URLconf는 myapp/만 바라본다.
    #   https://www.example.com/myapp/?page=3 이 요청될 경우에도 myapp/만 신경쓴다.
    # - view 
    #   일치하는 패턴을 찾으면, HttpRequest 객체를 첫번째 인수로 하고, 경로로부터 <캡쳐된> 값을
    #   키워드 인수로 하여 특정한 view 함수를 호출
    # - kwargs
    #   view에 전달될 사전형 데이터
    # - name 
    #   URL에 이름을 지으면, 템플릿을 포함한 어디서나 명확하게 참조할 수 있다.
    #   이 강력한 기능을 통해, 단 하나의 파일만 수정해도 project내의 모든 URL 패턴을 바꿀 수 
    #   있도록 도와준다.
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

11/1000 삼국지[10권] – 이문열

드디어 삼국지 전권을 다 읽었다.
1권부터 5권을 읽은것만 여러번이였던것 같다.

나관중은 참 글을 잘 쓰는 글쟁이였구나 싶다.

역사와 픽션 사이에서 흥미로운 이야기들을 잘 끼워넣음으로써
지루할수 있는 역사가 잼있게 느껴졌다.

누가 가장 맘에 드냐고 묻는다면 단연코 조조이다.
기개와 처세술 그리고, 어떤 환경에서도 좌절하지 않고 나아가는 모습.
그 처럼 살아가고 싶다.

마땅히 남길 후기는 없고, 좋아하는 인물들이 죽을때마다 책을 접고 싶었다. ㅋㅋ

다음 책으로 넘어간다.

[Django 02] 시놀로지 도커에 설치하기

1. 터미널에서 apt update를 한다

역시나 내가 뭘 하면 오류가 발생하지. 도커를 내렸다 올리면 해결된다.

apt upgrade
apt update

2. python3.8 설치를 한다.

apt install python3.8

3. pip 설치를 한다.

apt install python3-pip
pip3 --version
pip3 install --upgrade pip

pip3 –version 명령어를 쳐서 python 몇 버전과 연결이 되어 있는지 확인한다.
현재 사용하는 파이썬 버전은 3.8.3인데, 3.6과 연결되어 있다. 이를 조치해주려 한다…

파이썬 제거하기..

sudo apt purge -y python2.7-minimal
sudo apt-get remove --purge python3.6

분명히 삭제했음에도 삭제가 되지 않는 현상이 있다면,

sudo apt autoremove

깔끔하게 제거되었다. ㄲㄲㄲ
다시 1번부터 재설치..

3. Django install

pip3 install Django

장고 실행은 아래글을 참고

[Django 01] 장고를 설치해보자.

실행방법

sudo python3 manage.py rumserver 0:포트번호

오류 발생 – Allowed Host

ALLOWED_HOSTS = [‘magpiebros.com’]


	

[Django 01] 장고를 설치해보자.

목표: restAPI를 제공할 수 있는 서버를 만드는 것이 목표이다.

이를 위해서는 웹서버가 필요하다.
Flask와 고민해보았으나, Django를 선택했다.

먼저 우분투 서버로 들어가서 다음과 같이 장고를 인스톨한다.

sudo python3 -m pip install Django

이제 튜토리얼을 따라서 샘플을 만들어보아야 겠다.
/var/www/html/로 이동해서 다음 명령을 실행한다.

sudo django-admin startproject mysite

다음과 같이 앱을 실행하면, html 폴더 이하에 해당 mysite 폴더가 생성된다.
해당 폴더에는 관련 소스들이 생성된다.
django나 test를 사용하여 프로젝트를 생성한다면 오류가 발생할 수 있으니 주의.

  • 관련글 : 학습해야 할 목록
  • https://docs.djangoproject.com/en/3.1/ref/django-admin/
  • https://docs.python.org/3/tutorial/modules.html#tut-packages
  • https://docs.djangoproject.com/en/3.1/topics/http/urls/

서버를 구동시켜보자

sudo python3 manage.py runserver

그리고, 웹 브라우저로 접속해보자

장고 웹 서버를 구동시켰다.
오늘의 목표는 여기까지.

[Python] webdriver.Chrome(‘chromedriver’) 에러 대처

난 단지 selenum을 학습하고 싶었을뿐인데, 예외가 발생했다.
물론, 크롬의 버전을 확인했고, 크롬드라이버도 해당 버전에 맞추어 설치했음에도 불구하고 이런 사태가 벌어졌다.

from selenium import webdriver

driver = webdriver.Chrome('chromedriver')

에러내용은 아래와 같았다.


During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/-/Documents/dev/Python/webscraping_basic/13_selenium.py", line 3, in <module>
    driver = webdriver.Chrome('chromedriver')
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__
    self.service.start()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start
    raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

몇가지 해결책들이 있었지만, 우선 정품상태를 좋아하기 때문에 커맨드로 뭔가 땡겨오는 것들은 선호하지 않아서 크롬을 일단 최신버전으로 업그레이드 해보기로 했다.

다시 드라이버를 설치해보고, 증상이 동일하길래 에러문구를 자세히 보았다…
아무리봐도 ./ 패스가 맞는데도 동작을 안하길래 절대경로로 실행 시켰더니 잘 동작하였다.

왜 상대경로로 동작을 하지 않았을까?

문제는 경로 문제였음.

from selenium import webdriver

driver = webdriver.Chrome('/Users/-/Documents/dev/Python/webscraping_basic/chromedriver')  # Optional argument, if not specified will search path.

[Pyhon] scraping 작성중

파이썬으로 뭔가 데이터를 만들어서 앱을 만들려고 한다.
참 만들만한게 없다는 생각이 들어서.. 스크래핑을 학습중이다.

아래 코드는 스크래핑을 통해 파일로 저장하는 샘플 코드이다.

import requests

# res = requests.get("http://naver.com")
res = requests.get("http://google.com")

#print("응답코드:", res.status_code)

# if res.status_code == requests.codes.ok:
#     print("정상입니다.")
# else:
#     print("오류", requests.codes.ok)

# 오류 발생시 바로 종료
res.raise_for_status()
print("스크래핑 진행중")


print(len(res.text))

# 파일로 저장하기
with open("mygoogle.html", "w", encoding="utf8") as f:
    f.write(res.text)


  • 참고 자료 – 나도코딩 님의 영상 강의
  • https://www.youtube.com/watch?v=yQ20jZwDjTE&list=PLMsa_0kAjjrd8hYYCwbAuDsXZmHpqHvlV&index=4

[Python] requests를 설치후 에러날때 한가지 의심할 부분

라이브러리를 설치후 import 했음에도 에러가 반복 발생.
설치된 Python버전을 모두 바꿔봐도 안되길래 로그를 봤더니..

아나콘다를 설치해놓았던 부분에서 에러가 발생했음.

그래서 아나콘다를 날리고 났더니 정상 동작

아나콘다가 설치되어 있었다면 삭제해보시길.

무료 폰트를 찾아서..

앱을 만들려다 보니 저작권들이 거슬린다.
경제적 자유! 그것을 위한 우리의 여행은 끝이 나지 않는다..

아래 링크들은 유투버를 통해서 알게 된 링크이다.
라이센스를 잘 읽어보고, 글꼴을 사용하길 바란다.
경우에 따라 유료인것도 있어서…

1.검은고딕 https://github.com/zesstype/Black-Han…

2.에스코어드림 http://www.s-core.co.kr/who-we-are/font/

3.몬소리체 https://brunch.co.kr/@creative/32

4.Noto Sans https://fonts.google.com/specimen/Not…

5.잉크립퀴드체 http://www.thefaceshop.com/event/lipq…

6.tvn 즐거운 이야기체 http://tvn10festival.tving.com/playgr…

7.스웨거체 http://www.swagger.kr/font.html

8.주아체 http://font.woowahan.com/

눈누 https://noonnu.cc/

구글폰트 https://fonts.google.com/

  • 참고 유튜버 영상 링크
  • https://www.youtube.com/watch?v=7gOiGK83X-o