2017-09-03 2 views
0

이 튜토리얼을 따라 기본 Flask 응용 프로그램을 빌드하여 데이터베이스를 배우고 있습니다 : https://www.tutorialspoint.com/flask/flask_sqlalchemy.htm 및 현재 SQLite3 데이터베이스에 연결할 필요가있는 지점에 있습니다. SQLAlchemy. 솔직히 말해서 그렇게 잘되지 않습니다. 나가서 설명하자면 NameError : 전역 이름 '플래시' NameError : 전역 이름 'flash'가 정의되지 않았습니다.

여기 내 app.py

#!/usr/bin/python 

from flask import Flask, render_template, json, request 
from flask_sqlalchemy import SQLAlchemy 
import sqlite3 



conn = sqlite3.connect('test.db') 




app = Flask(__name__) 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///students.sqlite3' 
db = SQLAlchemy(app) 


class Students(db.Model): 
    id = db.Column('student_id',db.Integer, primary_key=True) 
    name = db.Column(db.String(80), unique=True) 

    def __init__(self, name, id): 
     self.name = name 
     self.id = id 

    def __repr__(self): 
     return '<Students %r>' % self.name 


db.create_all() 


@app.route("/") 
def main(): 
    return render_template('index.html') 




@app.route('/new', methods = ['GET', 'POST']) 
def new(): 
    if request.method == 'POST': 
     if not request.form['name'] or not request.form['id']: 
     flash('Please enter all the fields', 'error') 
     else: 
     student = Students(request.form['name'], request.form['id']) 
     db.session.add(student) 
     db.session.commit() 

     flash('Record was successfully added') 
     return redirect(url_for('show_all')) 
    return render_template('new.html') 



@app.route("/admin") 
def show_all(): 
    return render_template('show_all.html', students = students.query.all()) 



    # create user code will be here !! 


if __name__ == "__main__": 
    app.run(debug=True) 

index.html을

<!DOCTYPE html> 
<html lang="en"> 

<head> 
    <title>Attendance System</title> 


    <link href="http://getbootstrap.com/dist/css/bootstrap.min.css" rel="stylesheet"> 

    <link href="http://getbootstrap.com/examples/jumbotron-narrow/jumbotron-narrow.css" rel="stylesheet"> 


</head> 

<body> 

    <div class="container"> 
     <div class="header"> 
      <nav> 
       <ul class="nav nav-pills pull-right"> 
        <li role="presentation" class="active"><a href="#">Home</a> 
        </li> 
        <li role="presentation"><a href="#">Sign In</a> 
        </li> 
        <li role="presentation"><a href="new">Sign Up</a> 
        </li> 
       </ul> 
      </nav> 
      <h3 class="text-muted">Python Flask App</h3> 
     </div> 

     <div class="jumbotron"> 
      <h1>Attendance App</h1> 
      <p class="lead"></p> 
      <p><a class="btn btn-lg btn-success" href="new" role="button">Sign up today</a> 
       <a class="btn btn-lg btn-success" href="show_all" role="button">Administrate</a> 
      </p> 
     </div> 

     <footer class="footer"> 
      <p>&copy; Company 2015</p> 
     </footer> 

    </div> 
</body> 

</html> 

show_all.html이야

을 정의되지 않은이 오류가있어

<!DOCTYPE html> 
    <html lang = "en"> 
     <head></head> 
     <body> 

      <h3> 
      <a href = "{{ url_for('show_all') }}">Comments - Flask 
       SQLAlchemy example</a> 
      </h3> 

      <hr/> 
      {%- for message in get_flashed_messages() %} 
      {{ message }} 
      {%- endfor %} 

      <h3>Students (<a href = "{{ url_for('new') }}">Add Student 
      </a>)</h3> 

      <table> 
      <thead> 
       <tr> 
        <th>Name</th> 
        <th>Id</th> 
       </tr> 
      </thead> 

      <tbody> 
       {% for student in students %} 
        <tr> 
         <td>{{ student.name }}</td> 
         <td>{{ student.id }}</td> 

       {% endfor %} 
      </tbody> 
      </table> 

     </body> 
    </html> 

**new.html** 

<!DOCTYPE html> 
<html> 
    <body> 

     <h3>Attendance</h3> 
     <hr/> 

     {%- for category, message in get_flashed_messages(with_categories = true) %} 
     <div class = "alert alert-danger"> 
      {{ message }} 
     </div> 
     {%- endfor %} 

     <form action = "{{ request.path }}" method = "post"> 
     <label for = "name">Name</label><br> 
     <input type = "text" name = "name" placeholder = "Name" /><br> 
     <label for = "id">Id Number</label><br> 
     <input type = "text" name = "id" placeholder = "Student Id" /><br> 
     <input type = "submit" value = "Sign-in!" /> 

     </form> 

    </body> 
</html> 

문제 :

나는 연결이 작동하거나 그렇지 않으면 그것은 나를위한 제이기 때문에 처음에는 MySQL을 사용 시도에서 오류가의가 NameError 하나를 고칠 경우에도 모르지만 flask.ext.mysql되지 않습니다 , 그래서 나는 SQLAlchemy와 SQLite3으로 바꾸려고 노력했다. 어떤 도움이 나 같은 초보자에게 감사합니다. 감사!

답변

1

코드에 from flask import flash을 추가하십시오. 모든 HTML 파일은이 질문과 관련이 없습니다.

관련 문제