강의를 똑같이 따라해봤는데요. 오류가 뜨네요..ㅜㅠ
from main import * 를 했는데, app 이 undefined 라고 합니다..!
pylint install도 해봤고, 아예 import를 따로도 해봤는데 같은 문제가 발생하네요!
어떻게 해결할 수 있을까요??
구글에서는 보통 app을 import하지 않고 먼저 사용했을 때 이런 오류가 발생한다고 하는데, from main import *로 app을 분명히 정의한 것 같은데 왜 안되는지 모르겠습니다.
(참고로 @ 와 app 사이에 띄어쓰기는 다시 붙였습니다!)
아래는 제 코드 붙여놓겠습니다!
에러는 다음과 같습니다.
init.py
from . import member
from . import board
from .filter import format_datetime
from .common import login_required
from flask import Flask, request, render_template, abort, url_for
from flask import redirect
from flask import flash, session
from flask_pymongo import PyMongo
from datetime import datetime, timedelta
from bson.objectid import ObjectId
import time
import math
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb"
app.config["SECRET_KEY"] = "abcd"
app.config["PERMANENT_SESSION_LIFETIME"] = timedelta(minutes=30)
mongo = PyMongo(app)
run.py
from main import app
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True, port=9000)
member.py
from main import *
@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 == "" or email == "" or pass1 == "" or pass2 == "":
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")
@app.route("/login", methods=["GET", "POST"])
def member_login():
if request.method == "POST":
email = request.form.get("email")
password = request.form.get("pass")
next_url = request.form.get("next_url")
members = mongo.db.members
data = members.find_one({"email": email})
if data is None:
flash("회원 정보가 없습니다.")
return redirect(url_for("member_login"))
else:
if data.get("pass") == password:
session["email"] = email
session["name"] = data.get("name")
session["id"] = str(data.get("_id"))
session.permanent = True
if next_url is not None:
return redirect(next_url)
else:
return redirect(url_for("lists"))
return redirect(url_for("lists"))
else:
flash("비밀번호가 일치하지 않습니다.")
return redirect(url_for("member_login"))
return ""
else:
next_url = request.args.get("next_url", type=str)
if next_url is not None:
return render_template("login.html", next_url=next_url)
else:
return render_template("login.html")
님 천재입니다. 이걸 어떻게 알아내셨을까요. 정말 아무리 검색하고 물어봐도
안아오던데 , 대단하십니다.