溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python的flask怎么配置

發(fā)布時間:2021-08-17 09:21:54 來源:億速云 閱讀:164 作者:chen 欄目:編程語言

這篇文章主要講解了“python的flask怎么配置”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“python的flask怎么配置”吧!

  配置flask的一些問題

  首先給上相關(guān)配置代碼

  manage.py

  import os

  from flask_migrate import MigrateCommand

  from App import creat_app

  from flask_script import Manager

  # env=os.environ.get('default')

  app =creat_app(env='default')

  manager=Manager(app)

  manager.add_command("db",MigrateCommand)

  if __name__ == '__main__':

  manager.run()

  init.py

  from flask import Flask

  from App.ext import init_ext

  from App.settings import envs

  from App.views import init_blue

  def creat_app(env):

  app=Flask(__name__)

  app.config.from_object(envs.get(env))

  init_ext(app)

  init_blue(app)

  return app

  ext.py

  from flask_sqlalchemy import SQLAlchemy

  from flask_migrate import Migrate

  from flask_bootstrap import Bootstrap

  from flask_session import Session

  db=SQLAlchemy()

  migrate=Migrate()

  def init_ext(app):

  db.app=app

  db.init_app(app)

  migrate.init_app(app,db)

  Session(app)

  Bootstrap(app)

  setting.py

  import os

  BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

  def get_db_uri(dbinfo):

  engine = dbinfo.get("ENGINE")

  driver = dbinfo.get("DRIVER")

  user = dbinfo.get("USER")

  password = dbinfo.get("PASSWORD")

  host = dbinfo.get("HOST")

  port = dbinfo.get("PORT")

  name = dbinfo.get("NAME")

  return '{}+{}://{}:{}@{}:{}/{}'.format(engine, driver, user, password, host, port, name)

  class Config:

  DEBUG = False

  TESTING = False

  SQLALCHEMY_TRACK_MODIFICATIONS = False

  SECRET_KEY='Rock'

  SESSION_TYPE='redis'

  SESSION_COOKIE_SECURE=True

  SESSION_USE_SIGNER=True

  @staticmethod

  def init_app(app):

  pass

  class DevelopConfig(Config):

  DEBUG = True

  dbinfo = {

  "ENGINE": "mysql",

  "DRIVER": "pymysql",

  "USER": "root",

  "PASSWORD": "123456",

  "HOST": "localhost",

  "PORT": "3306",

  "NAME": "flask",

  }

  SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)

  class TestConfig(Config):

  TESTING = True

  dbinfo = {

  "ENGINE": "mysql",

  "DRIVER": "pymysql",

  "USER": "root",

  "PASSWORD": "123456",

  "HOST": "localhost",

  "PORT": "3306",

  "NAME": "flask",

  }

  SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)

  class StagingConfig(Config):

  dbinfo = {

  "ENGINE": "mysql",

  "DRIVER": "pymysql",

  "USER": "root",

  "PASSWORD": "123456",

  "HOST": "localhost",

  "PORT": "3306",

  "NAME": "flask",

  }

  SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)

  class ProductConfig(Config):

  dbinfo = {

  "ENGINE": "mysql",

  "DRIVER": "pymysql",

  "USER": "root",

  "PASSWORD": "123456",

  "HOST": "localhost",

  "PORT": "3306",

  "NAME": "flask",

  }

  SQLALCHEMY_DATABASE_URI = get_db_uri(dbinfo)

  envs = {

  'develop': DevelopConfig,

  'testing': TestConfig,

  'stage': StagingConfig,

  'product': ProductConfig,

  'default': DevelopConfig,

  }

  views.py鄭州做人流多少錢 http://www.120zzzzyy.com/

  from flask import Blueprint, render_template, request, Response, session

  blue=Blueprint('blue',__name__)

  def init_blue(app):

  app.register_blueprint(blue)

  @blue.route("/login",methods=["GET","POST"])

  def login():

  if request.method=='GET':

  return render_template("login.html")

  elif request.method=="POST":

  username=request.form.get("username")

  # return render_template("login.html",username=username)

  # response=Response("%s" % username)

  # # response.set_cookie('username',username)

  # session['username']=username

  # return response

  return render_template("login.html")

  login.html

  {% extends 'bootstrap/base.html' %}

  {% block navbar %}

  Toggle navigation

  Brand

  Link (current)

  Link

  Dropdown

  Action

  Another action

  Something else here

  Separated link

  One more separated link

  Submit

  Link

  Dropdown

  Action

  Another action

  Something else here

  Separated link

  {% endblock %}

  {% block content %}

  {% endblock %}

  {% block header %}

  {% endblock %}

  {% block container %}

  {% endblock %}

  {% block footer %}

  {% endblock %}

  以上是我寫的所有代碼,在配置過程中遇到了一些問題所以拿出來分享以下,希望能幫助到你們。

  第一個問題

python的flask怎么配置

  首先我發(fā)現(xiàn)上面的env=os.environ.get(‘default’)這個方法,在我操作的過程中是沒法將default傳到給creat_app(),因此,他就獲得不了default相關(guān)配置信息,于是運行后他就會報錯,如以下報錯信息

  UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".

  Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set.

  以下是init_app中提取出來的信息

  if (

  'SQLALCHEMY_DATABASE_URI' not in app.config and

  'SQLALCHEMY_BINDS' not in app.config

  ):

  warnings.warn(

  'Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. '

  'Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".'

  )

  可以看出他是沒有獲取到SQLALCHEMY_DATABASE_URI和SQLALCHEMY_BINDS才報錯的,而這個是寫在setting中的,所以我直接將default賦給env,之后他不會報錯。,也沒有出現(xiàn)這個報錯信息。

  然后第二個問題:

  SESSION_TYPE='redis'

  我在運行的時候出現(xiàn)了這個問題

  redis.exceptions.ConnectionError: Error 10061 connecting to 127.0.0.1:6379. 由于目標計算機積極拒絕,無法連接 是由于沒有啟動redis服務(wù),解決方法如下:

  啟動后就沒問題了

感謝各位的閱讀,以上就是“python的flask怎么配置”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對python的flask怎么配置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI