vessels
@vessels
Ни черта не понял, но очень интересно!

Как импортировать всё из файла python?

Добрый вечер, у меня в проекте (Flask) довольно много кода, и я боюсь что совсем скоро и он станет не читабельным, так вот, пробовал я вынести часть его в отдельный файл, и flask его просто не видит, как решить эту проблему?

config.py
import os, telebot
from flask import Flask, session, render_template, jsonify, request, redirect
from site import *

app = Flask(__name__)
app.secret_key = 'hello'
token  = '***************************'
bot = telebot.TeleBot(token)

if __name__ == '__main__':
    print(colored(' * App is running!', 'green'))
    print()
    app.run(debug = True)

site.py
@app.route('/')
def index():
    if session.get('logged'):
        return redirect('/homepage')
    else:
        return redirect('/submit')


@app.route('/submit', methods=['GET', 'POST'])
def login():
    if not session.get('logged'):
        if request.method == 'POST':
            key = request.form['key']
            if key == token:
                session['logged'] = True
    else:
        return redirect('/')
    return render_template('submit.html', title = 'Sign Up!')


@app.route('/logout')
def logout():
    session.clear()
    return redirect('/')


@app.route('/homepage')
def homepage():
    if session.get('logged'):
        return render_template('home.html', title = 'Bot')
    else: 
        return redirect('/')


На самом деле уже долго мучаюсь, наверное нужно идти и подучить основы, но дело в том что некоторые файлы мне успешно удавалось импортировать, и всё отлично работало. Но вот с фласком чего-то не выходит. Так вот, как решить данную проблему?
  • Вопрос задан
  • 527 просмотров
Решения вопроса 1
deepblack
@deepblack Куратор тега Python
Например, вот несколько вариантов как можно сделать
  • Использовать Blueprints
  • Оформить в виде пакета
  • Посмотреть как это сделано здесь
  • Поискать по гитхабу другие проекты на flask и посмотреть как они устроены.
UPD:
flask его просто не видит

Советую прочитать

Вот пример приложения с Blueprints:
Смотрим внимательно
# структура проекта
├── api.py
├── app.py
├── config.py
├── __init__.py
├── start.sh
├── templates
├── venv
└── views.py


# api.py
from flask import Blueprint, jsonify

api = Blueprint('api', __name__)

@api.route('/')
def index():
    return jsonify({'api': {'version': 1.1}})


# app.py
from flask import Flask
from .views import blog
from .api import api

app = Flask(__name__)

app.config.from_pyfile('config.py')

app.register_blueprint(blog)
app.register_blueprint(api, url_prefix='/api/v1')


# views.py
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

blog = Blueprint('blog', __name__, template_folder='templates')

@blog.route('/')
def show():
    try:
        return render_template('index.html')
    except TemplateNotFound:
        abort(404)


# start.sh
#!/bin/sh
. venv/bin/activate
export FLASK_ENV=development
python -m flask run

Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Danya_Violet
@Danya_Violet
CTO/CIO
Пробовали переименовать файл site.py? Возможно есть такой модуль, поэтому и не импортируется
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы