2017-04-01 11 views
0

플라스크 응용 프로그램 만들기입니다. 응용 프로그램이 로컬 서버에서 완벽하게 실행 중입니다. 오류는 없지만 데이터는 데이터베이스에 저장되지 않습니다. 나는 무엇을 놓치고 있습니까?플라스크 데이터가 데이터베이스에 저장되지 않았습니다.

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

@ davidism : 코드에 대한 내 경험이었습니다. 아마도 이것이 주석이어야했지만 주석에 코드를 포함하기가 어려웠을 것입니다. – bernie

+0

큰 고마워요. 버니. 너는 너무 사랑한다. 간단한 요청은 내가 뭘 잘못했는지 설명하고 코드는 무엇을 의미합니까? –

관련 문제