남박사의 파이썬으로 실전 웹사이트 만들기

남박사의 파이썬으로 실전 웹사이트 만들기

(4개의 수강평)

126명의 수강생
55,000원
지식공유자 · 남박사
38회 수업· 총 12시간 11분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 초급
남박사의 다른 강의
연관 로드맵
연관 로드맵이 없어요 ㅠㅠ
reny koo 프로필

nginx 접속 문제 reny koo 2일 전

우여곡절이 많았지만 그래도 남박사님 덕분에 전체 과정을 쭉 공부할 수 있었습니다.

우선 감사를 드립니다.

리눅스 우분투에서 배포하기 강좌 중

이상태를 유지하며 ifconfig로 

ip를 확인하고 접속을 시도하였는데 응답 오류가 나옵니다.

한가지 걸리는 것이 ..  웹서버에 배포하는 것말고 기존 실습 과정 중에도 0.0.0.0 으로는 접속이 안되어서 127.0.0.1로 사용하여 실습 과정에 참여했었습니다.   그런데 여기서는 test.py를 127.0.0.1로 바꾸고 실행 해도 접속이 되지 않아서 해결이 안되네요.

어떤식으로 해결해야 할지 질문드려요.  0.0.0.0.을 어딘가에서 사용중이기 때문에 발생하는걸까요 통신사 공유기를 사용중에 있습니다.

8
dudqls3986 프로필

Docker를 통해 실행하면 웹에 이미지가 표시가 안됩니다. dudqls3986 5일 전

Docker를 통해 웹을 실행하면 HTML파일에 걸어두었던 <img> 태그가 웹에선 표시가 안됩니다.(docker를 이용하기 전까지는 잘 표시 됬었습니다.)

Jinja 문법때문에 img 태그는 <img src="{{url_for('static',  filename= '이미지.png')}}"> 이렇게 작성하였고,

이미지 파일들은 main 폴더 내에 static 폴더를 만들어 저장했습니다.

<a href="{{url_for('board.lists')}}"></a> 와 같이 링크는 docker를 통해서도 잘 먹힙니다.

portainer를 통해 myweb의 로그파일을 살펴보면 

[error] 11#11: *6 open() "/app/static/Right.png" failed (2: No such file or directory)

이런식으로 파일 또는 폴더가 없다고 나옵니다...

강의 덕분에 지금까지 여러가지를 응용해서 구현할 수 있었습니다. 좋은 강의 제공해 주셔서 감사합니다!!

2
dhtngus4921@naver.com 프로필

venv interpreter dhtngus4921@naver.com 8일 전

select interpreter에 venv가 안나와서 인터넷을 아무리 뒤져서 따라해봐도 안되는데 어떻게 해야 할까요 ㅠㅠㅠ

1
마이크로펀 프로필

몽고DB 속도 관련 문의 입니다. 마이크로펀 13일 전

안녕하세요.

몽고DB에 데이터를 넣고 읽어보고 있습니다.

DB에 쌓여 있는 데이터는 

1,100,787 이정도 임의로 축적 되어 있습니다.

처음에 읽을때는 속도가 빠른것 같더니. 저정도 쌓여 지니깐. 

2~3초 정도 걸리는 것 같습니다.

    board = mongo.db.mqtt
    datas = board.find(query).skip((page - 1) * limit).sort("timestamp",-1).limit(10)

소스는 위처럼 동일하게 되어 있습니다.

알려주신 Robo 프로그램에서는..

50개 단위만 읽어서 그러는지 속도는 0.023 ~0.024 초 걸려서 엄청 빠른 속도로 읽어 지고 있습니다.

위에 프로그램을 ROBO처럼 바꾼다면 어떤식으로 변경이 되어야하나요?

3
김종완 프로필

게시판만들기-글쓰기 부분 질문합니다. 김종완 25일 전

9분대에 나와있는 것을 따라하고 python run.py를 실행시킨 결과입니다.

(venv) C:\python\myweb>python run.py

Traceback (most recent call last):

  File "run.py", line 11, in <module>

    def board_write():

  File "C:\python\myweb\venv\lib\site-packages\flask\app.py", line 1314, in decorator

    self.add_url_rule(rule, endpoint, f, **options)

  File "C:\python\myweb\venv\lib\site-packages\flask\app.py", line 98, in wrapper_func

    return f(self, *args, **kwargs)

  File "C:\python\myweb\venv\lib\site-packages\flask\app.py", line 1274, in add_url_rule

    rule = self.url_rule_class(rule, methods=methods, **options)

TypeError: __init__() got an unexpected keyword argument 'method'

이 이후로 http://localhost9000/write를 실행해도 나오지가 않습니다.

초보라 정말 모르겠습니다...

1
eacp 프로필

게시판 ajax 관련해서 문의드립니다. eacp 28일 전

안녕하세요  박사님

강의 들은 내용을 응용해서 게시판을 ajax로 구현 하던중에 막히는 부분이 생겨서 해법을 찾다가 마땅한 방법을

찾지 못해서 이런경우는 어떻게 해결하시는지 알고싶어서 문의드려봅니다.

일단 제가 구현하려고 하는거는  게시판에서 페이지 번호를 클릭해서 해당 페이지로 이동할때 자바스크립 함수를 호출해서

ajax로 해당 페이지 내용을 가져와서 다시 테이블 부분만 갱신 하는것인데

일단 페이지 번호를 클릭했을때 페이지값을 자바스크립트 함수에서  ajax  를 통해서 url_for 로 요청할때 이 페이지번호 값을

어떻게 전달할지 저의 얕은 지식으론 해결하기가 쉽지가 않습니다. 좋은 방법이 있는지 알고싶습니다.

페이지네이션 할때 클릭할때 자바스크립 함수 호출하는 부분입니다.

get_agencylist({{페이지번호}} 

 

자바스크립함수에서 받은 페이지번호로  ajax로 url_for 통해서 요청할때  페이지번호를 넘겨서 요청해야하는데

저 페이지번호를 어떤식으로 전달해야할지... {{  }} 부분은 서버쪽에서 처리되는 코드 같은데 어떻게 페이지 번호를 

넘겨야하는지 알고싶습니다

2
마이크로펀 프로필

.나요에러가 구문 {{result.pubdate|formatdatetime}} 마이크로펀 1달 전

안녕하세요.

view.html에서는 잘되었는데...

{{result.pubdate|formatdatetime}}

list.html에서는

{{result.pubdate}}

formatdatetime

이부분이 들어가면 dict 에러가 발생 합니다.

@app.template_filter("formatdatetime")
def format_datetime(value):
    if value is None:
        return ""

    now_timestamp = time.time()
    offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp)
    value = datetime.fromtimestamp(int(value) / 1000) + offset
    return value.strftime('%Y-%m-%d %H:%M:%S')

@app.route("/list")
def lists():
    # 페이지 값 ( 값이 없는 경우 기본값은 1)
    page = request.args.get("page"1type=int)
    # 한페이지당 몇개의 게시물을 출력할지 설정
    limit = request.args.get("limit"10type=int)
    
    search = request.args.get("search", -1type = int)
    keyword = request.args.get("keyword"type = str)
    
    #최종적으로 완성된 쿼리를 만들 변수
    query = {}
    
    #검색어 상태를 추가할 리스트 변수
    search_list = []
    
    if search == 0:
        search_list.append({"title":{"$regex":keyword}})
    elif search == 1:
        search_list.append({"contents":{"$regex":keyword}})
    elif search == 2:
        search_list.append({"title":{"$regex":keyword}})
        search_list.append({"contents":{"$regex":keyword}})
    elif search == 3:
        search_list.append({"name":{"$regex":keyword}})
        
    # 검색 대상이 한개라도 존재할 경우 query 변수에 $or 리스트를 쿼리 합니다.
    if len(search_list) > 0:
        query = {"$or" : search_list}


    board = mongo.db.board
    datas = board.find({}).skip((page - 1) * limit).limit(limit)

    # 게시물의 총 갯수
    tot_count = board.find({}).count()
    
    # 마지막 페이지의 수를 구합니다.
    last_page_num = math.ceil(tot_count / limit)
    
    # 페이지 블럭을 5개씩 표기
    block_size = 5
    
    # 현재 불럭의 위치
    block_num = int((page - 1) / block_size)
    
    # 블럭의 시작 위치
    block_start = int((block_size * block_num) + 1)
    
    # 블럭의 끝 위치
    block_last = math.ceil(block_start + (block_size - 1))
    
    return render_template(
        "list.html"
        datas = datas,
        limit = limit, 
        page = page,
        block_start = block_start,
        block_last = block_last,
        last_page_num = last_page_num
       )

혹시 오타가 있을까봐. 

소스까지 넣어봤습니다.

7
eacp 프로필

게시판 리스트 관련 소스에서 질문드립니다 eacp 1달 전

안녕하세요

강의 잘 보고있습니다. 

최근 게시판 소스를 따라 하는중인데 에러가 발생해서 질문이 드립니다.

저는 mysql (SQLAlchemy 사용) 에서 데이터를 가져와서 html 로 데이터를 넘기는 과정에서

박사님 소스에 나온대로 html 에서 if datas.count() > 0 체크하는 과정에서 

TypeError: count() takes exactly one argument (0 given) 

count 인자가 없어서 에러가 발생한거 같은데.. 

딕셔너리 count 함수에서 인자값으로 요소를 안넘겨줘도 상관없나요?

박사님 소스은 어떻게 에러없이 처리하셨는지 알고싶습니다.

for 문으로 datas 값을 출력하는걸 보면 datas 는 잘넘어온거 같습니다.

데이터를 html 로 넘겨주는 부분

html 부분에러내용

2
조유빈 프로필

flake8 문법 오류 질문 조유빈 1달 전

안녕하세요.

'게시판 만들기-글쓰기' 강의 중 문법 오류가 발생하여 질문 드립니다.

캡쳐 파일에 보이는 10번 줄의 코딩(노란색 표시 부분) 부분에서 ' line too long  flake8(E501)'이라는 문법 오류가 발생됩니다. 

위 오류를 무시하고 개발하는 방법을 찾아보았는데요, 적당한 자료가 없어서 질문 드립니다.

이런 경우는 오류를 정상적으로 되돌릴 수 있는 방법이 있을까요~

3
조유빈 프로필

자바스크립트 질문 조유빈 1달 전

안녕하세요~

열심히 강의 따라하면 배우고 있습니다 ^^

자바스크립트 강의의 거의 끝 부분인 '마우스 포인터 생성하기' 부분에서 오류가 발생합니다. 

<script src="https://code.jquery.com/jquery-3.4.1.min.js">
<script>
function mouseOver(a){
a.style.color = "yellow";
a.style.background-color = "blue";
a.style.cursor = "pointer";
}
function mouseOut(a){
a.style.color = "";
a.style.background-color = "";
a.style.cursor = "";
}
</script>
<p onmouseover="mouseOver(this);" onmouseout="mouseOut(this);"> 마우스 포인터를 올려보세요 </p>
</body>
</html>

-> 콘솔 창에서 아래와 같은 메시지가 출력됩니다;;;

';'expected.js [19, 24]

조언 부탁드립니다~

2
suhr 프로필

블럭 위치 및 검색결과 인덱스 관련 궁금증 suhr 2달 전

안녕하세요..

간단한 궁금증이 생겨서 질문해 봅니다

1. 말씀하신 첫번째 블럭이 계산해보면 실제 숫자는 0번째 블럭부터 시작하는거 같은데..

제가 올바르게 이해한게 맞나요?

2.  검색결과를 보여주는 페이지의 경우에는 검색결과 만큼 페이지를 누를 수 있는게 아니라  현재 가지고있는 데이터 페이지 만큼 누를 수 있게 구현이 됬네요

예를들어 데어터가 50개, 한블록당 10개씩 보여주면 5페이지 까지 있을텐데 이 상태에서 검색을 해서 검색결과가 1개건 2개건 상관없이 5페이지 까지 조회가 가능하네요...

제 구현에 문제가 있는건지 원래 이렇게 설계된 건지 궁금합니다...

즐거운 크리스마스 보내세요 :)

1
손기명 프로필

form이었네요~ 손기명 2달 전

form이 자동완성으로 닫기가 두번되어 있었네요~

해결했습니다~

1
개발자도상국 프로필

데코레이터가 어렵네요.. 개발자도상국 2달 전

데코레이터를 구글검색도 해봤는데 딱 이해가 가지 않습니다. 좀 쉽게 설명된 참고자료 어디 없을까요?

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스