flask中操作SQLAlchemy資料庫出現問題?
把代碼放Github上了:https://github.com/sunshine-sjd/Flask.git
按照《Flask Web開發:基於Python的Web應用開發實戰》這本書寫的,一開始就是hello.py這個文件,所有的功能都實現了,但是在第七章:大型程序的結構里 把hello.py拆分了,然後在資料庫這塊就出現問題了,一直沒法對資料庫進行操作,導致程序報如下錯誤:File "C:Python27libsite-packagesflaskapp.py", line 1566, in make_responseraise ValueError(View function did not return a response)
ValueError: View function did not return a response.views.py:
from flask import render_template, session, redirect, url_for, current_app
from .. import db
from ..models import User
from ..email import send_mail
from . import main
from .forms import NameForm@main.route(/, methods=[GET, POST])
def index():
form = NameForm()
if form.validate_on_submit():
user = User.query.filter_by(UserName=form.name.data).first() #這個地方就出錯了
if user is None:
user = User(UserName=form.name.data)
db.session.add(user)
session[known] = False
if current_app.config[FLASKY_ADMIN]:
send_mail(current_app.config[FLASKY_ADMIN], New User,
mail/new_user, user=user)
else:
session[known] = True
session[name] = form.name.data
return redirect(url_for(.index))
return render_template(index.html,
form=form, name=session.get(name),
known=session.get(known, False))
manager.py:
import os
from flask_mod.app import create_app, db
from flask_mod.app.models import User, Role
from flask.ext.script import Manager, Shell
from flask.ext.migrate import Migrate, MigrateCommandapp = create_app(os.getenv(FLASK_CONFIG) or default)
manager = Manager(app)
migrate = Migrate(app, db)def make_shell_context():
return dict(app=app, db=db, User=User, Role=Role)
manager.add_command(shell, Shell(make_context=make_shell_context))
manager.add_command(db, MigrateCommand)if __name__ == __main__:
app\__init__.py:
manager.run()
from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.mail import Mail
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from ..config import configbootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)bootstrap.init_app(app)
mail.init_app(app)
moment.init_app(app)
db.init_app(app)from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
查了很久不知道為什麼出錯,請大家幫忙看看,先謝謝了~~
單純說報錯,這就是為毛我說學編程不說別的,英語好歹會那麼一丟丟。
View function did not return a response。
View function是指flasky的MVC模型中的V,簡單說就是那個帶路由的函數。
did not [do sth.] 過去式否定,表示沒有做到某事。
return 對就是那個return,返回的意思。
a response 一個響應。HTTP通信的基礎就是request-response對應。
這是你給出的錯誤提示,簡單說就是路由指向一個函數,然後這個函數沒有給出一個合理的Response
為什麼沒有呢?接下來我要說的是,你學的是Python,理論上任何一本Python教材都會告訴你縮進很重要,因為Python靠縮進來區分語句塊,然而你貼上來的代碼縮進幾個意思?如果你說原本縮進是正確的,是貼上來出問題了……雖說可能性不大,並且現在沒辦法準確判斷,我就問問看,你覺得validation沒通過時,你的index函數有返回值么?代碼貼到Github幫題主看看。就你現在改過的在知乎貼的格式好的代碼,就不下3處縮進錯誤,這樣我真懶得看具體問題。貼到Github或者別的公開代碼倉庫,我跑一下幫你看看問題在哪。
這個很清楚 視圖函數沒有返回一個響應 第幾行都給你說明了 。我也是新手 有些很笨的問題 沒人教 確實很啃爹 ,加油!
LZ 加油!我最近也在看這本書,我是在虛擬機上跑linux的建議LZ堅持代碼放到github上的習慣
你還是打消寫程序的念頭吧。。。
推薦閱讀:
※利用函數計算實現網路遊戲或視頻直播中的敏感詞檢測
※pandas基本功能3
※如何真正零基礎入門Python?(第一節)
※為什麼python代碼有時候在命令行下和Python Shell中執行的結果不一樣呢 ?