2017-04-01 13 views
0

Flask Application.Applicationを作成していますが、ローカルサーバー上で完全に実行されています。エラーはありませんが、データはデータベースに格納されません。私は何が欠けていますか?Flaskデータがデータベースに保存されていません

1.routes.py

from flask import Flask,render_template,request 
from models import db ,User 
from forms import SignupForm 

app = Flask(__name__) 


app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:////Database.db" 
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True 
db. init_app(app) 

app.secret_key ='development_key' 

@app.route('/' , methods=['GET','POST']) 
def index(): 
    form = SignupForm() #form object 
    if request.method == 'POST': 
     if form.validate() == False: 
      return render_template('index.htm' , form=form) 
     else: 
     #new user to be added to database newuser = User(form.fname.data,form.lname.data,form.email.data,form.password.data) 
      db.create_all() 
      db.session.add(newuser) 
      db.session.commit() 
      return render_template('profile.htm') 
    elif request.method == 'GET':                 
     return render_template('index.htm',form=form) 

@app.route('/aboutus') 
def aboutus(): 
    return render_template('aboutus.htm') 

@app.route('/profile') 
def profile(): 
    return render_template('profile.htm') 

@app.route('/contactus') 
def contactus(): 
    return render_template('contactus.htm') 

2.app.py

from routes import app 
app.run(debug = True) 

3.forms.py

from flask_wtf import FlaskForm as Form 
from wtforms import StringField,PasswordField,SubmitField 
from wtforms.validators import DataRequired,Email,Length 

class SignupForm(Form): 
    fname = StringField('First Name',validators=[DataRequired("Please Enter Your FirstName")]) 
    lname = StringField('Last Name',validators=[DataRequired("Please Enter Your LastName")]) 
    password = PasswordField('Password',validators=[DataRequired("Password Can't Be Empty"), Length(min=8,message="Password Must Be 8 character Long")]) 
    email = StringField('Email',validators=[DataRequired("Please Enter Your Email") , Email("Please Enter A Valid Email")]) 
    submit = SubmitField('Register') 

4.models.py

from flask_sqlalchemy import SQLAlchemy 
from werkzeug import generate_password_hash, check_password_hash 

db = SQLAlchemy() 

class User(db.Model): 
    __tablename__= "users" 
    id=db.Column(db.Integer,primary_key=True) 
    fname = db.Column(db.String(100)) 
    lname = db.Column(db.String(100)) 
    email = db.Column(db.String(100),unique=True) 
    password = db.Column(db.String(100)) 

    def __init__(self,fname,lname,email,password): 
     self.fname=fname 
     self.lname=lname 
     self.email=email 
     self.set_password(password) 

    def set_password(self,password): 
     self.password=generate_password_hash(password) 

    def check_password(self,password): 
     return check_password_hash(self.password,password) 

答えて

0

私はあなたのコードを試しました。データベースが作成されていませんでした。代わりにデータベースファイルが適切な場所にあることを確認するために、次のような方法を試してみてください。

import os 
basedir = os.path.abspath(os.path.dirname(__file__)) 

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(basedir, 'Database.db') 
+0

データベースが作成されていると思わないのはなぜですか?彼らはパスを与え、エラーを記述しません。 – davidism

+0

@ダビデミズム:それは私のコードの経験でした。おそらくこれはコメントであったはずですが、コメントにコードを含めるのは難しいでしょう。 – bernie

+0

大変ありがとう@ベルニー。あなたはあまりにも良い親愛なるです。簡単なリクエストは、私が間違っていることを説明してくださいあなたのコードは何を意味する –

関連する問題