from flask_ckeditor import CKEditor from datetime import date from werkzeug.security import generate_password_hash, check_password_hash from flask_sqlalchemy import SQLAlchemy from sqlalchemy.orm import relationship from flask_login import UserMixin, login_user, LoginManager, login_required, current_user, logout_user from forms import CreatePostForm, UserForm, LoginForm, CommentForm from flask_gravatar import Gravatar from sqlalchemy.ext.declarative import declarative_base # Base = declarative_base() app = Flask(__name__) app.config['SECRET_KEY'] = '8BYkEfBA6O6donzWlSihBXox7C0sKR6b' ckeditor = CKEditor(app) Bootstrap(app) ##CONNECT TO DB app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id))
from flask_bootstrap import Bootstrap from flask_ckeditor import CKEditor from flask_mail import Mail from flask_moment import Moment from flask_login import LoginManager, AnonymousUserMixin from flask_whooshee import Whooshee from flask_wtf import CSRFProtect bootstrap = Bootstrap() moment = Moment() login_manager = LoginManager() csrf = CSRFProtect() ckeditor = CKEditor() mail = Mail() whooshee = Whooshee() @login_manager.user_loader def get(uid): from CSDN.models import User return User.query.get(int(uid)) login_manager.login_view = 'auth.login' login_manager.login_message = u'请先登录或注册' login_manager.login_message_category = 'warning' class Guest(AnonymousUserMixin): @property def is_admin(self):
from flask import Flask,render_template,request,flash,session,redirect,jsonify from flask_bootstrap import Bootstrap from flask_sqlalchemy import SQLAlchemy from werkzeug.security import generate_password_hash,check_password_hash from flask_ckeditor import CKEditor import os import json from datetime import datetime app=Flask(__name__) Bootstrap(app) CKEditor(app) app.config['SECRET_KEY']=os.urandom(20) app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///blog.db' db=SQLAlchemy(app) class User(db.Model): id=db.Column(db.Integer,primary_key=True) username=db.Column(db.String(100),unique=True,nullable=False) firstname=db.Column(db.String(100),nullable=False) lastname=db.Column(db.String(100),nullable=False) email=db.Column(db.String(100),unique=True,nullable=False) password=db.Column(db.Text,nullable=False) class Blogpost(db.Model): id=db.Column(db.Integer,primary_key=True) title=db.Column(db.String(1000),nullable=False) content=db.Column(db.Text,nullable=False) author=db.Column(db.String(100),default="Anonymous") authorid=db.Column(db.Integer)
from flask_limiter import Limiter from flask_limiter.util import get_remote_address from flask_login import LoginManager from flask_mail import Mail from flask_migrate import Migrate from flask_ckeditor import CKEditor from flask_thumbnails import Thumbnail # урезать количество запросов к странице limiter = Limiter(key_func=get_remote_address) # работа с логином и паролем lm = LoginManager() mail = Mail() migrate = Migrate() ck_editor = CKEditor() thum = Thumbnail()
# set request body's max length 限制请求报文的最大长度,单位为 byte app.config['MAX_CONTENT_LENGTH'] = 3 * 1024 * 1024 # 3Mb # Flask-CKEditor config app.config['CKEDITOR_SERVE_LOCAL'] = True # 使用扩展内置的本地资源 app.config['CKEDITOR_FILE_UPLOADER'] = 'upload_for_ckeditor' # Flask-Dropzone config app.config['DROPZONE_ALLOWED_FILE_TYPE'] = 'image' app.config['DROPZONE_MAX_FILE_SIZE'] = 3 app.config['DROPZONE_MAX_FILES'] = 30 # Flask-WTF 使用 WTForms 内置的错误消息翻译 app.config["WTF_I18N_ENABLED"] = False ckeditor = CKEditor(app) # 实例化 CKEditor dropzone = Dropzone(app) @app.route('/', methods=['GET', 'POST']) def index(): return render_template('index.html') @app.route('/html', methods=['GET', 'POST']) def html(): form = LoginForm() if request.method == 'POST': username = request.form.get('username') flash('Welcome home, %s!' % username) return redirect(url_for('index'))
def create_app(config): app = Flask(__name__) config_name = config if not isinstance(config, str): config_name = os.getenv("FLASK_CONFIG", "default") app.config.from_object(Config[config_name]) app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False # not using sqlalchemy event system, hence disabling it Config[config_name].init_app(app) # Set up extensions mail.init_app(app) db.init_app(app) login_manager.init_app(app) csrf.init_app(app) compress.init_app(app) RQ(app) configure_uploads(app, images) configure_uploads(app, docs) CKEditor(app) share.init_app(app) Bootstrap(app) # Register Jinja template functions from .utils import register_template_utils register_template_utils(app) # Set up asset pipeline assets_env = Environment(app) dirs = ["assets/styles", "assets/scripts"] for path in dirs: assets_env.append_path(os.path.join(basedir, path)) assets_env.url_expire = True assets_env.register("app_css", app_css) assets_env.register("app_js", app_js) assets_env.register("vendor_css", vendor_css) assets_env.register("vendor_js", vendor_js) # Configure SSL if platform supports it if not app.debug and not app.testing and not app.config["SSL_DISABLE"]: from flask_sslify import SSLify SSLify(app) # Create app blueprints from .main import main as main_blueprint app.register_blueprint(main_blueprint) from .public import public as public_blueprint app.register_blueprint(public_blueprint) from .account import account as account_blueprint app.register_blueprint(account_blueprint, url_prefix="/account") from .question import question as question_blueprint app.register_blueprint(question_blueprint, url_prefix="/question") from .answer import answer as answer_blueprint app.register_blueprint(answer_blueprint, url_prefix="/answer") from .project import project as project_blueprint app.register_blueprint(project_blueprint, url_prefix="/project") from .admin import admin as admin_blueprint app.register_blueprint(admin_blueprint, url_prefix="/admin") from .organisations import organisations as organisations_blueprint app.register_blueprint(organisations_blueprint, url_prefix="/organisations") from .blog import blog app.register_blueprint(blog, url_prefix="/blog") return app
from flask import Flask from flask_ckeditor import CKEditor from flask_login import LoginManager app = Flask(__name__) app.config.from_pyfile('config.py') ck = CKEditor(app) login_manager = LoginManager(app) login_manager.login_view = "login" from app import views from app import model from app import commands @login_manager.user_loader def load_user(userid): return model.Admin.query.get(int(userid))
from flask_admin import BaseView, expose from flask_admin.model.template import EndpointLinkRowAction, LinkRowAction from flask_ckeditor import CKEditor, CKEditorField # 导入扩展类 CKEditor 和 字段类 CKEditorField from flask_admin.contrib.fileadmin import FileAdmin from flask_admin.contrib.sqla import ModelView from flask_admin.actions import action from flask_admin.base import AdminIndexView from flask_admin.base import MenuLink # Create Flask application app = Flask(__name__) app.config.from_pyfile('config.py') # app.config['SQLALCHEMY_DATABASE_URI'] = 'jdbc:postgresql://postgres:@localhost:5432/policyreader' # app.config['BABEL_DEFAULT_LOCALE'] = 'zh_CN' db = SQLAlchemy(app) ckeditor = CKEditor(app) # 初始化扩展 # db.init_app(app) # Define models roles_people = db.Table( 'roles_people', db.Column('people_id', db.Integer(), db.ForeignKey('people.id')), db.Column('roles_id', db.Integer(), db.ForeignKey('role.id'))) class Role(db.Model, RoleMixin): id = db.Column(db.Integer(), primary_key=True) name = db.Column(db.Text(), unique=True) description = db.Column(db.Text()) def __str__(self):
from flask_mail import Mail from flask_bootstrap import Bootstrap from flask_moment import Moment from flask_babel import Babel, lazy_gettext as _l from config import Config db = SQLAlchemy() migrate = Migrate() login = LoginManager() login.login_view = 'auth.login' login.login_message = _l('请先登陆') mail = Mail() bootstrap = Bootstrap() moment = Moment() babel = Babel() ckeitor = CKEditor() def create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) db.init_app(app) migrate.init_app(app, db) login.init_app(app) mail.init_app(app) bootstrap.init_app(app) moment.init_app(app) babel.init_app(app) ckeitor.init_app(app)
def create_app(config_name): app = Flask(__name__) app.config.from_object(config[config_name]) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # not using sqlalchemy event system, hence disabling it #'C:/Users/oem/Desktop/marketplace/marketplace/app/static/frontend/images/' #'C:/Users/oem/Desktop/marketplace/marketplace/appstatic/docs/' app.config['UPLOADED_IMAGES_DEST'] = basedir + 'static/frontend/images' if \ not os.environ.get('UPLOADED_IMAGES_DEST') else os.path.dirname(os.path.realpath(__file__)) + os.environ.get( 'UPLOADED_IMAGES_DEST') app.config['UPLOADED_DOCS_DEST'] = basedir + 'static/docs' if \ not os.environ.get('UPLOADED_DOCS_DEST') else os.path.dirname(os.path.realpath(__file__)) + os.environ.get( 'UPLOADED_DOCS_DEST') app.config['docs'] = app.config['UPLOADED_DOCS_DEST'] app.config['CKEDITOR_SERVE_LOCAL'] = True app.config['CKEDITOR_HEIGHT'] = 400 app.config['CKEDITOR_FILE_UPLOADER'] = 'upload' app.config['CKEDITOR_ENABLE_CSRF'] = True # if you want to enable CSRF protect, uncomment this line app.config['UPLOADED_PATH'] = os.path.join(basedir, 'uploads') #app.config['WHOOSH_BASE']='whoosh' config[config_name].init_app(app) # Set up extensions mail.init_app(app) db.init_app(app) login_manager.init_app(app) csrf.init_app(app) compress.init_app(app) RQ(app) configure_uploads(app, (images)) configure_uploads(app, docs) ckeditor = CKEditor(app) share.init_app(app) moment.init_app(app) jwt.init_app(app) sess.init_app(app) whooshee.init_app(app) # whooshee = Whooshee(app) # Register Jinja template functions from .utils import register_template_utils register_template_utils(app) # Set up asset pipeline assets_env = Environment(app) dirs = ['assets/styles', 'assets/scripts'] for path in dirs: assets_env.append_path(os.path.join(basedir, path)) assets_env.url_expire = True assets_env.register('app_css', app_css) assets_env.register('app_js', app_js) assets_env.register('vendor_css', vendor_css) assets_env.register('vendor_js', vendor_js) # Configure SSL if platform supports it if not app.debug and not app.testing and not app.config['SSL_DISABLE']: from flask_sslify import SSLify SSLify(app) # Create app blueprints from .blueprints.public import public as public_blueprint app.register_blueprint(public_blueprint) from .blueprints.seo_world import seo_world as seo_world_blueprint app.register_blueprint(seo_world_blueprint) from .blueprints.main import main as main_blueprint app.register_blueprint(main_blueprint) from .blueprints.account import account as account_blueprint app.register_blueprint(account_blueprint) from .blueprints.admin import admin as admin_blueprint app.register_blueprint(admin_blueprint, url_prefix='/admin') from .blueprints.marketplace import marketplace as marketplace_blueprint app.register_blueprint(marketplace_blueprint) from .blueprints.organisations import organisations as organisations_blueprint app.register_blueprint(organisations_blueprint, url_prefix='/organisations') from .blueprints.sitemaps import sitemaps as sitemaps_blueprint app.register_blueprint(sitemaps_blueprint) from .blueprints.api import api as apis_blueprint app.register_blueprint(apis_blueprint, url_prefix='/api') # main_api.init_app(app) app.jinja_env.globals.update(json_load=json_load, image_size=image_size, get_cart=get_cart) app.jinja_env.add_extension('jinja2.ext.do') @app.before_request def before_request(): try: session['cart_id'] except: u = uuid.uuid4() user_agent = request.headers.get('User-Agent') if user_agent is not None: user_agent = user_agent.encode('utf-8') base = 'cart: {0}|{1}|{2}'.format(_get_remote_addr(), user_agent, u) if str is bytes: base = text_type(base, 'utf-8', errors='replace') # pragma: no cover h = sha512() h.update(base.encode('utf8')) session['cart_id'] = h.hexdigest() @app.cli.command() def reindex(): with app.app_context(): whooshee.reindex() @app.cli.command() def routes(): """'Display registered routes""" rules = [] for rule in app.url_map.iter_rules(): methods = ','.join(sorted(rule.methods)) rules.append((rule.endpoint, methods, str(rule))) sort_by_rule = operator.itemgetter(2) for endpoint, methods, rule in sorted(rules, key=sort_by_rule): route = '{:50s} {:25s} {}'.format(endpoint, methods, rule) print(route) @app.template_filter('product') def product(o): """check if object is user""" from app.models import MProduct return o.__class__ == MProduct whooshee.init_app(app) return app
from flask import Flask, render_template, session from flask_bootstrap import Bootstrap from flask_mail import Mail from flask_moment import Moment from flask_sqlalchemy import SQLAlchemy from config import config from flask_login import LoginManager from flask_ckeditor import CKEditor from flask_babelex import Babel from flask_uploads import UploadSet, IMAGES, configure_uploads, patch_request_class import os.path as op babel = Babel() ckeditor = CKEditor() #富文本编辑器 bootstrap = Bootstrap() mail = Mail() moment = Moment() db = SQLAlchemy() login_manager = LoginManager() #不同安全等级 'strong':记录客户端IP地址和浏览器的用户代理信息,如果发现异动就登出用户 login_manager.session_protection = 'strong' #设置登录页面的端点 蓝本名.函数名 login_manager.login_view = 'auth.login' # 文件上传 photos = UploadSet('photos', IMAGES) #view放在顶部会报错ImportError: cannot import name 'login_manager' from .admin.views import MyView, UserView, PostView, FollowView from flask_admin import Admin, AdminIndexView from flask_admin.contrib.fileadmin import FileAdmin
@Time : 2019/3/28 0028 下午 10:27 @Comment : 该文件包含一些程序中的扩展内容 """ from flask_bootstrap import Bootstrap from flask_sqlalchemy import SQLAlchemy from flask_mail import Mail from flask_ckeditor import CKEditor from flask_moment import Moment from flask_login import LoginManager from flask_wtf import CSRFProtect # 实例化扩展对象 bootstrap = Bootstrap() db = SQLAlchemy() mail = Mail() ckEditor = CKEditor() moment = Moment() login_manager = LoginManager() csrfProtect = CSRFProtect() # 加载用户函数 # 每当调用current_user时会调用此函数,user_id是flask-login会帮我们在cookie的session中设置的一个记录 @login_manager.user_loader def load_user(user_id): from flaskblog.models import Admin user = Admin().query.get(int(user_id)) return user login_manager.login_view = "my_auth.login"
from flask import Flask, redirect, url_for, get_flashed_messages, send_from_directory, session from flask import request, render_template from form import LoginForm, UploadForm, RichTextForm import os from flask_ckeditor import CKEditor from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.secret_key = "secret string" app.config['MAX_CONTENT_LENGTH'] = 3 * 1024 * 1024 #这个是3M 的大小,直接在这儿配置真是厉害。 app.config['UPLOAD_PATH'] = os.path.join(app.root_path, 'uploads') #设置文件上传到的位置。 ckeditor = CKEditor(app) #这个是用来初始化的对吧。 db = SQLAlchemy(app) #都需要这样来初始化它的啊 app.config['CKEDITOR_SERVE_LOCAL'] = True #配置ckeditor app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv( 'DATABASE_URL', 'sqlite:///' + os.path.join(app.root_path, 'data.db')) #os.path.join 这个是找到这个下面的路径,SQLite 数据库的数量在win下是3个,在linux下是4个 @app.route('/') def hello_world(): # print(name) name = request.args.get("name") print(name) if name is None: name = request.cookies.get('name', "Human") return 'Hello World!' + name
def create_app(config): app = Flask(__name__) config_name = config if not isinstance(config, str): config_name = os.getenv('FLASK_CONFIG', 'default') app.config.from_object(Config[config_name]) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['MAX_CONTENT_LENGTH'] = 1024 * 1024 app.config['UPLOAD_EXTENSIONS'] = ['.jpg', '.png', '.gif'] # not using sqlalchemy event system, hence disabling it ## app.config['UPLOADED_IMAGES_DEST'] = curr+'/../../app/static/photo/' ## app.config['UPLOADED_DOCS_DEST'] = curr+'/../../app/static/docs/' ## app.config['UPLOADED_PATH'] = curr+'/../../app/static/images/' app.config['UPLOADS_DEFAULT_DEST'] = UPLOAD_FOLDER Config[config_name].init_app(app) # Set up extensions mail.init_app(app) db.init_app(app) login_manager.init_app(app) csrf.init_app(app) compress.init_app(app) RQ(app) configure_uploads(app, (images)) configure_uploads(app, docs) CKEditor(app) # Register Jinja template functions from .utils import register_template_utils register_template_utils(app) # Set up asset pipeline assets_env = Environment(app) dirs = ['assets/styles', 'assets/scripts'] for path in dirs: assets_env.append_path(os.path.join(basedir, path)) assets_env.url_expire = True assets_env.register('app_css', app_css) assets_env.register('app_js', app_js) assets_env.register('vendor_css', vendor_css) assets_env.register('vendor_js', vendor_js) # Configure SSL if platform supports it if not app.debug and not app.testing and not app.config['SSL_DISABLE']: from flask_sslify import SSLify SSLify(app) # Create app blueprints from .blueprints.main import main as main_blueprint app.register_blueprint(main_blueprint) from .blueprints.public import public as public_blueprint app.register_blueprint(public_blueprint) from .blueprints.account import account as account_blueprint app.register_blueprint(account_blueprint, url_prefix='/account') from .blueprints.admin import admin as admin_blueprint app.register_blueprint(admin_blueprint, url_prefix='/admin') return app
def _init_plugins(app): CKEditor(app) Dropzone(app) Session(app)