55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
pylint 때문에 실행 오류 납니다.
실행 오류가 나서 from 과 import 내용을 하나씩 지우며 테스트 해보았습니다 결론적으로 빨간색 네모친 부분의 코드가, 코드를 작성할땐 중간에 있는데 저장을 하면, 아래 그림과 같이 pylint가 자동으로 코드를 맨위로 올려 버립니다 위와 같이요 그리고, 코드가 위로 올라가면 오류가 납니다 이럴땐 어떡해야하는지 알려주시면 감사하겠습니다 몇일에 걸려서 오류 찾고, 구글링하며, 찾아보고 있는데, 도저히 방법을 모르겠네요 도와주시면 감사하겠습니다 좋은 강의 올려주셔서 항상 감사드리며, 앞으로도 좋은 강의 부탁드립니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
session["id"] 와 session.get("id")
두개의 차이가 무엇인지 알려주시면 감사하겠습니다! 좋은 강의 감사드려요
- 해결됨남박사의 파이썬으로 실전 웹사이트 만들기
join html에 javascript를 통해 폼기능 검증 코드를 추가하였으나 제대로 동작하지 않습니다.
안녕하세요, javascript를 통한 폼 기능 검증을 위해 코드를 작성하던 중, 회원가입 코드 작성에서 제대로 동작하지 않아 문의드립니다. 아래와 같이 코드를 작성하였으나 동작하지 않고 기존 member.py에서 구현한 검증기능만 동작하고 있는데요, 어떤 부분이 문제인지 궁금합니다. ( 이메일만 입력 후 회원가입 시도 시 member.py에서 구현한 "입력되지 않은 값이 있다"라는 오류메시지가 뜹니다.) join.html {% extends 'main.html' %} {% block contents%} <script> function checkForm() { if($.trim($("#name").val()) == ""){ alert("이름을 입력하세요"); $("#name").focus(); return false; } if($.trim($("#email").val()) == ""){ alert("이메일을 입력하세요"); $("#email").focus(); return false; } if(!vailidateEmail($.trim($("#email").val()))) { alert("이메일 유효성이 올바르지 않습니다.") $("#email").focus(); return false; } if($.trim($("#pass1").val()) == ""){ alert("비밀번호를 입력하세요"); $("#pass1").focus(); return false; } if($.trim($("#pass2").val()) == ""){ alert("비밀번호를 입력하세요"); $("#pass2").focus(); return false; } if($.trim($("#pass1").val()) != $.trim($("#pass2").val())){ alert("비밀번호가 일치하지 않습니다."); $("#pass2").select().focus(); return false; } } </script> <table> <form name="form" action="{{url_for('member.member_join')}}" method ="POST" onsubmit="return checkForm"> <thead> <caption>회원가입</caption> </thead> <tbody> <tr> <td>이름</td> <td><input type="text" name="name" id="name"></td> </tr> <tr> <td>이메일</td> <td><input type="text" name="email" id= "email"></td> </tr> <tr> <td>비밀번호</td> <td><input type="password" name="pass" id="pass1"></td> </tr><tr> <td>비밀번호 확인</td> <td><input type="password2" name="pass2" id="pass2"></td> </tr> <tr> <td colspan="2"><input type="submit" value="가입하기"></td> </tr> </form> </table> {%endblock%}
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
select_one 선택자 어떻게 해야할까요 도저히 모르겠네요
파이썬을 검색하고 f 12 눌렀을때 보이는 화면은 아래와 같습니다 도저히 어떻게 선택자(단어가 맞는지 모르겠네요)를 해야할까요? 저는 아래와 같이 한번 해봤습니다만 안되네요 여러가지로 많이 해봤는데도 안되서 문의드립니다. title = l.select_one("div#res div#search div#rso div.hlcw0c div.tF2Cxc h3.LC20lb.DKV0Md").text
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
맥에서 mongo 설치
맥에서 mongo를 설치하려고 하니 윈도우와는 다르게 실행되네요 ㅠㅠ 설치방법을 검색해서 실행하려고 하니 터미널에서 설치를 하라고 하는데 자꾸 에러가 납니다.. 수업에서 필요한 정도로만 설치해서 사용하고 싶은데 맥에서 설치방법을 좀 알 수 있을까요ㅜㅜ robomongo는 설치완료했습니다! 그런데 mongodb가 설치가 안됐는지 "Cannot connect to the MongoDB at localhost:27017." 오류가 뜨네요 ㅠㅠ
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
회원가입 작성 후 실행 시 The session is unavailable because no secret key was set 오류가 발생합니다.
회원가입 페이지 구현 후 실행하니 The session is unavailable because no secret key was set 이런 에러가 발생하는데요, 어떻게 해결해야하는지 궁금합니다. run.py 코드는 첨부합니다.그리고 강의를 보면서 작성하다보면 똑같이 작성한 것 같은데도 에러가 발생하는 경우가 많아서요.. 혹시 강의 코드도 받아볼 수 있을까요? from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from datetime import datetime from bson.objectid import ObjectId from flask import abort from flask import redirect from flask import url_for from flask import flash import time import math app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" mongo = PyMongo(app) @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", 1, type=int) #한페이지당 몇개의 게시물을 출력할지 limit = request.args.get("limit", 5, type=int) search = request.args.get("search", -1, type=int) keyword = request.args.get("keyword", type=str) #최종적으로 완성된 쿼리를 만들 변수 query = {} #검색어 상태를 추가할 리스트변수 search_list = [] if search == 0: search_list.append({"title": {"®ex": keyword}}) elif search == 1: search_list.append({"contents": {"®ex": keyword}}) elif search == 2: search_list.append({"title": {"®ex": keyword}}) search_list.append({"contents": {"®ex": keyword}}) elif search == 3: search_list.append({"name": {"®ex": keyword}}) if len(search_list) > 0: query = {"$or": search_list} print(query) board = mongo.db.board #skip (2번쩨 페이지-1)*10 -> 앞페이지 10개 skip, 이후부터 10개까지 출력 datas =board.find(query).skip((page - 1) * limit).limit(limit) #게시물의 총 갯수 tot_count = board.find(query).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) @app.route("/view/<idx>") def board_view(idx): #idx = request.args.get("idx") if idx is not None: board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data is not None: result = { "id" : data.get("_id"), "name" : data.get("name"), "title": data.get("title"), "contents":data.get("contents"), "pubdate":data.get("pubdate"), "view":data.get("view") } return render_template("view.html", result=result) return abort(404) @app.route("/write", methods=["GET", "POST"]) def board_write(): if request.method == "POST": name = request.form.get("name") title = request.form.get("title") contents = request.form.get("contents") print(name, title, contents) current_utc_time = round(datetime.utcnow().timestamp()*1000) board = mongo.db.board #있으면 리턴 없으면 board 생성 post = { "name" : name, "title": title, "contents": contents, "pubdate":current_utc_time, "view":0 } x = board.insert_one(post) print(x.inserted_id) return redirect(url_for("board_view", idx=x.inserted_id)) else: return render_template("write.html") @app.route("/join", methods=["GET", "POST"]) def member_join(): if request.method == "POST": name = request.form.get("name", type=str) email = request.form.get("email", type=str) pass1 = request.form.get("pass", type=str) pass2 = request.form.get("pass2", type=str) if name is None or email is None or pass1 is None or pass2 is None: flash("빈값있음") return render_template("join.html") if pass1 != pass2: flash("비밀번호 불일치") return render_template("join.html") members = mongo.db.members cnt = members.find({"email": email}).count() if cnt >0: flash("중복된 이메일 주소입니다.") return render_template("join.html") current_utc_time = round(datetime.utcnow().timestamp(*1000)) post = { "name": name, "email": email, "pass": pass1, "joindate": current_utc_time, "logintime": " ", "logincount": 0 } members.insert_one(post) return "" else: return render_template("join.html") if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=9000) 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
게시판 검색기능 구현 후 데이터를 검색하여도 데이터 없음으로 나옵니다.
안녕하세요 강의를 보며 게시판 검색기능을 구현중인데요, 어떤 부분이 잘못되었는지 게시판 검색을 하여도 데이터 없음으로 나옵니다. 혹시 첨부한 코드에서 무엇이 잘못되었는지 봐주실 수 있을까요? <추가> 정정하면 기존 코드로는 제대로 검색이 이루어지지 않으며 아래와 같이 {}를 query로 바꾸면 아예 데이터 없음으로 나옵니다 datas =board.find(query).skip((page - 1) * limit).limit(limit) #게시물의 총 갯수 tot_count = board.find(query).count() from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from datetime import datetime from bson.objectid import ObjectId from flask import abort from flask import redirect from flask import url_for import time import math app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" mongo = PyMongo(app) @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", 1, type=int) #한페이지당 몇개의 게시물을 출력할지 limit = request.args.get("limit", 5, type=int) search = request.args.get("search", -1, type=int) keyword = request.args.get("keyword", type=str) #최종적으로 완성된 쿼리를 만들 변수 query = {} #검색어 상태를 추가할 리스트변수 search_list = [] if search == 0: search_list.append({"title": {"®ex": keyword}}) elif search == 1: search_list.append({"contents": {"®ex": keyword}}) elif search == 2: search_list.append({"title": {"®ex": keyword}}) search_list.append({"contents": {"®ex": keyword}}) elif search == 3: search_list.append({"name": {"®ex": keyword}}) if len(search_list) > 0: query = {"$or": search_list} print(query) board = mongo.db.board #skip (2번쩨 페이지-1)*10 -> 앞페이지 10개 skip, 이후부터 10개까지 출력 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) @app.route("/view/<idx>") def board_view(idx): #idx = request.args.get("idx") if idx is not None: board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data is not None: result = { "id" : data.get("_id"), "name" : data.get("name"), "title": data.get("title"), "contents":data.get("contents"), "pubdate":data.get("pubdate"), "view":data.get("view") } return render_template("view.html", result=result) return abort(404) @app.route("/write", methods=["GET", "POST"]) def board_write(): if request.method == "POST": name = request.form.get("name") title = request.form.get("title") contents = request.form.get("contents") print(name, title, contents) current_utc_time = round(datetime.utcnow().timestamp()*1000) board = mongo.db.board #있으면 리턴 없으면 board 생성 post = { "name" : name, "title": title, "contents": contents, "pubdate":current_utc_time, "view":0 } x = board.insert_one(post) print(x.inserted_id) return redirect(url_for("board_view", idx=x.inserted_id)) else: return render_template("write.html") if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=9000) <script> function search(){ var v_search = document.getElementById("search").value; var v_keyword = document.getElementById("keyword").value; if(v_search=="" | v_keyword==""){ return false; } else { self.location.href = "{{url_for('lists')}}?search=" + v_search +"&keyword="+v_keyword; } } </script> {%if datas.count() >0 %} <table> <thead> <tr> <td>번호</td> <td>제목</td> <td>이름</td> <td>날짜</td> <td>조회수</td> </tr> </thead> <tbody> <!--반복구간 시작--> {% for data in datas %} <tr> <td>{{loop.index + ((page -1) * limit)}}</td> <td><a href="{{url_for('board_view', idx=data._id)}}">{{data.title}}</a></td> <td>{{data.name}}</td> <td>{{data.pubdate | formatdatetime}}</td> <td>{{data.view}}</td> </tr> {% endfor %} <!--반복구간 끝--> </tbody> </table> {%if block_start - 1 > 0%} <a href="{{url_for('lists', page= block_start - 1)}}">[이전]</a> {%endif%} {% for i in range(block_start , block_last + 1)%} {%if i > last_page_num %} {{ i }} {%else%} {% if i == page %} <b>{{ i }}</b> {%else%} <a href="{{url_for('lists', page=i)}}">{{i}}</a> {%endif%} {%endif%} {% endfor%} {%if block_last < last_page_num%} <a href="{{url_for('lists', page= block_last+1)}}">[다음]</a> {%endif%} <select name="search" id="search"> <option value="">검색대상</option> <option value="0">제목</option> <option value="1">내용</option> <option value="2">제목+내용</option> <option value="3">작성자</option> </select> <input type="text" name="keyword" id="keyword"> <input type="button" value="검색" onclick="search()"> {% else %} <h3>데이터 없음</h3> {% endif %} 강의와 관련있는 질문을 남겨주세요.• 강의와 관련이 없는 질문은 지식공유자가 답변하지 않을 수 있습니다. (사적 상담, 컨설팅, 과제 풀이 등)• 질문을 남기기 전, 비슷한 내용을 질문한 수강생이 있는지 먼저 검색을 해주세요. (중복 질문을 자제해주세요.)• 서비스 운영 관련 질문은 인프런 우측 하단 ‘문의하기’를 이용해주세요. (영상 재생 문제, 사이트 버그, 강의 환불 등) 질문 전달에도 요령이 필요합니다.• 지식공유자가 질문을 좀 더 쉽게 확인할 수 있게 도와주세요.• 강의실 페이지(/lecture) 에서 '질문하기'를 이용해주시면 질문과 연관된 수업 영상 제목이 함께 등록됩니다.• 강의 대시보드에서 질문을 남길 경우, 관련 섹션 및 수업 제목을 기재해주세요. • 수업 특정 구간에 대한 질문은 꼭 영상 타임코드를 남겨주세요! 구체적인 질문일수록 명확한 답을 받을 수 있어요.• 질문 제목은 핵심 키워드를 포함해 간결하게 적어주세요.• 질문 내용은 자세하게 적어주시되, 지식공유자가 답변할 수 있도록 구체적으로 남겨주세요.• 정확한 질문 내용과 함께 코드를 적어주시거나, 캡쳐 이미지를 첨부하면 더욱 좋습니다. 기본적인 예의를 지켜주세요.• 정중한 의견 및 문의 제시, 감사 인사 등의 커뮤니케이션은 더 나은 강의를 위한 기틀이 됩니다. • 질문이 있을 때에는 강의를 만든 지식공유자에 대한 기본적인 예의를 꼭 지켜주세요. • 반말, 욕설, 과격한 표현 등 지식공유자를 불쾌하게 할 수 있는 내용은 스팸 처리 등 제재를 가할 수 있습니다.
- 해결됨남박사의 파이썬으로 실전 웹사이트 만들기
GCP 몽고 디비가 털렸습니다
GCP 몽고 디비가 털렸습니다. 가상서버 2개 쓰고 있는데, 둘다 암호화 당했습니다. 테스트용이라 별것은 없지만요. 방화벽 신경을 좀 써야 할것 같아요. 다들 조심하세요.
- 해결됨남박사의 파이썬으로 실전 웹사이트 만들기
기존 flask 에 텔레그램봇을 추가하는 방법.
안녕하세요 강사님. 강사님 강좌를 합쳐서 하나의 서비스로 구현하려고 하는데, 어느 강좌에 글을 남겨야하는지 몰라서 두군데 모두 글을 남겨봅니다. 한쪽에만 답변하셔도 됩니다. 현재 강사님의 강좌인 실전 웹사이트 만들기 강좌와 실전 100% 활용강좌를 모두 완강하였습니다. 게시판 서버를 감시하기위해서 텔레그램봇을 추가하려고 합니다. 봇파일(bot.py)을 별도로도 만들어 보고 run.py 에다 옮겨서 구현해봤는데도 메시지 보내기는 되는데, 메시지 가져오는 폴링 기능이 동작을 하지 않고 있습니다. 기본 기능인 에코 기능을 테스트 중입니다. 추가로 웹훅 방식으로도 구현해 봤는데, 게시판 서버가 nginx+uwsgi+flask 구조라서 그런지 POST 방식으로 텔레그램에서 게시판서버로 접속을하면 308 redirect 오류가 발생합니다. 확인해보니 텔레그램봇을 redirect 를 지원하지 않는다고 합니다. 혹시 동일구조(nginx+uwsgi+flask) 웹서비스와 텔레그램봇을 구현하신 경험이 있으시면 조언 부탁드립니다. 물론 웹훅을 위해서 도매인 설정 및 https 설정도 적용하여 정상동작하고 있습니다. 웹서비스와 텔레그램봇(폴링 또는 웹훅)을 어떤 구조로 만들어야 하는지 문의 드립니다. 웹훅방식이면 더 좋겠지만, 폴링방식이어도 감사드립니다.
- 해결됨남박사의 파이썬으로 실전 웹사이트 만들기
docker locale 변경 문의.
안녕하세요 강사님. 도커의 locale 관련 문의 드립니다. 리눅스에서 환경에서는 정상동작하던 부분이 도커로 올리면서 언어셋이 꼬인것처럼 오류가 발생합니다. 리눅스(우분투)의 locale 은 아래와 같습니다. 도커(tiangolo/uwsgi-nginx-flask)의 locale 은 아래와 같습니다. 도커에서 LANG=en_US.UTF-8 으로 변경하려면 어떻게 해야하는지 문의 드립니다. 구글 클라우드에서도 동일한 문제가 발생하여 도커를 사용하지 않고 클라우드에 직접 환경을 구성했습니다. 다행이 구글 클라우드에는 locale -a 로 확인해보니 영문설정이 있어서 설정만 변경하고 재부팅후 서비스를 확인하니 정상동작했습니다. 아래 내용은 구글 클라우드의 locale -a 내용입니다. 도커에서 LANG=en_US.UTF-8 으로 변경하려면 어떻게 해야하는지 문의 드립니다. 감사합니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
몽고 DB바뀌어서 잘안되네요
몽고 DB가 새롭게바뀌어서 잘모르겠네요
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
게시판-글상세보기 강의 중 질문입니다
안녕하세요- 특별히 안되는건 없는데, 이해가 안가는 부분이 있어서 질문드립니다. @app.route("/view") def board_view(): idx = request.args.get("idx") 이 부분 인데요. 세번째 줄의 idx가.. 앞에 있는건 변수라고 이해했는데 뒤에 있는 "idx" 는 어디에 있는 녀석을 데려온건지를 모르겠어서요. 몽고디비나 플라스크에 이미 존재하는 예약어 같은걸까요?
- 해결됨남박사의 파이썬으로 실전 웹사이트 만들기
이미지 유효성
안녕하세요 강사님. 이미지를 업로드시 해당 이미지가 진짜 이미지인지 아닌지 알수있나요? 예를 들면 텍스트 파일을 확장자만 변경한 경우처럼요. 자바스크립트에서 하는 방법을 몰라서, 파이썬 서버단에서 꼼수로 구현은 했는데, 클라이언트 단에서 가능한지 확인 부탁드립니다. 서버단에서는 저장하고 다시 읽어서 오류나면 삭제하는 방식으로 구현은 했는데, try: img = Image.open(savefilepath) img.close() return url_for("board.board_images", filename=filename) except: os.remove(savefilepath) return url_for("board.board_images", filename="error") 파일이름을 줄수 없어서 그냥 에러 처리해서 화면단에선 그림이 엑박됩니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
문법 문의 - {% if datas.count() > 0 %}
안녕하세요 남박사님. list.html 에서 datas를 받고 화면표시하는 부분에서 아래 조건문로 개수를 확인하는 부분에 대해 문의 드립니다. {% if datas.count() > 0 %} /* 화면표시 로직 */ {% else %} <h3>데이터가 없습니다~~</h3> {% endif %} if문의 datas.count()는 몽고디비에만 해당하는 문법인가요? 아래 리스트형 데이터(datas)를 화면에 표시하려고, data.count() 를 사용했더니, 문법 오류가 발생하여 datas|length 로 처리하였더니 오류 없이 처리되었습니다. datas: [{'name': '면도기'}, {'name': '가방'}, {'name': '원피스'}, {'name': '공기청정기'}] {% if datas|length > 0 %} <h3>데이터가 있습니다</h3> {% else %} <h3>데이터가 없습니다~~</h3> {% endif %} 몽고의 리턴결과와 리스트형 데이터의 처리문법이 위에 표시한것처럼 다르게되는지 문의 드립니다. 몽고결과의 데이터타입과 리스트형 데이터 타입이 달라서 처리방식이 다른지 답변부탁드립니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
IIS 서버로 기동시 에러
강의 수강은 완료하였고, 강의 내용을 기반으로 회사 사내망에서 간단하게 웹사이트 하나를 만들어서 사용하고 있습니다. 제 개인 PC에 IIS로 연동하고 있구요. 이번에 추가로 사이트를 하나 더 만들어서 동일하게 구성해서 기동을 시켰는데, 다음과 같은 에러가 발생하면서 페이지가 뜨지 않습니다. HTTP 오류 500.0 - Internal Server Error c:\brian\insa\myvenv\Scripts\python.exe - FastCGI 프로세스가 예기치 않게 종료되었습니다. 구글링을 해도 찾지 못하겠고, 혹시 저 에러가 왜 발생하는지 경험이 있으실까요?
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
외부접속호스트 설정하였지만 접속되지 않습니다.
안녕하세요, 파이썬 웹개발환경 설정 시 host를 외부 접속 가능하도록 0.0.0.0으로 설정 후 실행 시 브라우저에서 자동으로 열릴때 0.0.0.0:9000 이라는 주소창으로 뜨며 페이지 없음으로 뜹니다. 외부에서 접속이되도록 설정이 제대로 안된것 같은데 방화벽에서 9000포트 열어주는 것 외에 또 해야할것이 있나요? netstat -an 으로 확인 시 0.0.0.0:9000 이 리스닝인것 확인하였습니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
방화벽에서 파이썬을 예외하였는데도 page not found 메시지가 뜹니다.
안녕하세요, 기존 127.0.0.1:5000으로는 잘 접속되나 외부접속 가능한 호스트로 변경 시 404에러가 발생합니다. 방화벽에서 python 예외처리도 하였는데 추가적으로 해볼 수 있는 해결방법이 있을까요? 해당포트는 사용중이지 않습니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
파이썬 콘솔에서 출력시 한글이 유니코드로 나타납니다.
안녕하세요, 실습을 진행하던 중 한글 변환 에러가 발생하여 구글링을 통해 코드에 #-*- coding: utf-8 -*-를 추가하였는데요, 그 에러는 사라졌지만 파이썬 콘솔에서 출력시 한글이 유니코드로 나타납니다. 혹시 설치해야하는 플러그인이나 추가해야하는 코드가 있는지 궁금하며 해결방법 문의드립니다.
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
Flask를 Debug 모드로 설정하려면 어떻게 해야 하나요?
app.config['DEBUG'] 에서 설정하면 되는걸로 나오는데 동작을하지 않아요
- 미해결남박사의 파이썬으로 실전 웹사이트 만들기
next_url 사용한뒤 리디렉션을 미친듯이 합니다
그전까진 잘됬는데 next url 사용한뒤 글 작성을 누르면 GET /login?next_url=http%3A%2F%2Flocalhost%3A5000%2Fwrite HTTP/1.1" 302 - GET /login?next_url=http%3A%2F%2Flocalhost%3A5000%2Flogin%3Fnext_url%3Dhttp%253A%252F%252Flocalhost%253A5000%252Fwrite HTTP/1.1" 302 - 이런식으로 next url 리디렉션 무한루프에 빠집니다 해결좀 부탁드립니다 , 코드는 아무리봐도 강좌랑 크게 차이가 없어 보이는듯한데