저는 분석 팀을 위해 작은 웹 앱을 만들려고합니다. 그들은 단지 작성한 쿼리를 추가하고 볼 수있는 저장소가 필요합니다.플라스크 적용에서 클래스 가져 오기에 문제가 발생했습니다.
뷰/클래스에서 함수를 가져올 수 없기 때문에 지금까지 앱을 구현할 수 없었습니다. 누군가 내 문제가 무엇인지 파악할 수 있습니까?
File "C:\Users\Intern2\PycharmProjects\queries-Final2\queries_Final2.py", line 12, in <module>
from search_queries import SearchQueries
ImportError: cannot import name SearchQueries
내가 그 문제는 내가 다른 파일에 각 파일을 가져 오려고한다는 사실과 관련이있다 생각 :
나는이 오류가 발생합니다. 그러나, 나는 이것을 할 수있는 다른 방법을 모른다. 여기
내 코드입니다 :queries_Final2.py (기본 응용 프로그램 파일)
from __future__ import with_statement
from sqlite3 import dbapi2 as sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort,\
render_template, flash, _app_ctx_stack
import flask
import settings
import functools
# Views
from main import Main
from login import Login
from search_queries import SearchQueries
from add_queries import AddQueries
from edit_queries import EditQueries
DATABASE = 'C:\\Users\\Intern2\\PycharmProjects\\queries-Final2\\queriesDB.db'
app = flask.Flask(__name__)
app.config.from_object(__name__)
app.config.from_envvar('FLASKR_SETTINGS', silent=True)
app.secret_key = settings.secret_key
app.add_url_rule('/search-queries/',
view_func=SearchQueries.as_view('search-queries'),
methods=["GET", "POST"])
app.add_url_rule('/add-queries/',
view_func=AddQueries.as_view('add-queries'),
methods=["GET", "POST"])
def init_db():
"""Creates the database tables."""
with app.app_context():
db = get_db()
with app.open_resource('schema.sql') as f:
db.cursor().executescript(f.read())
db.commit()
def get_db():
"""Opens a new database connection if there is none yet for the
current application context.
"""
top = _app_ctx_stack.top
if not hasattr(top, 'sqlite_db'):
top.sqlite_db = sqlite3.connect(app.config['DATABASE'])
return top.sqlite_db
디스플레이 쿼리보기/클래스
from __future__ import with_statement
from sqlite3 import dbapi2 as sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort,\
render_template, flash, _app_ctx_stack
import flask
import settings
import functools
from queries_Final2 import get_db
import utils
class SearchQueries(flask.views.MethodView):
@utils.login_required
def get(self):
db = get_db()
cur = db.execute('select title, columns, query, notes, tags from entries order by id desc')
entries = [dict(title=row[0], columns=row[1], query=row[2],notes=row[3],tags=row[4]) for row in cur.fetchall()]
return render_template('search-queries.html', entries=entries)
쿼리 클래스/뷰 추가
from __future__ import with_statement
from flask import Flask, request, session, g, redirect, url_for, abort,\
render_template, flash, _app_ctx_stack
import flask
import functools
import utils
from queries_Final2 import get_db
class AddQueries(flask.views.MethodView):
@utils.login_required
def get(self):
return flask.render_template('add-queries.html')
def post(self):
db = get_db()
db.execute('insert into entries (title, columns, query, notes, tags) values (?, ?, ?, ?, ?)',
[request.form['title'],
request.form['columns'],
request.form['query'],
request.form['notes'],
request.form['tags']
])
db.commit()
flash('New entry was successfully posted')
return flask.render_template('search-queries.html')
모든 아이디어는 높이 평가 될 것입니다. 미리 감사드립니다.
문제가 해결 되었습니까? – orokusaki
불행히도, 그렇지 않았습니다. 필자는 주된 .py 파일 안에 모듈을 넣는 것을 끝내었고 이것은 트릭을 훌륭히 해냈습니다. 그러나, 나는 나의 디자인을 조금 더 조직적으로 유지하기를 바랬다. –