2017-09-03 4 views
0

Ich lerne Datenbanken durch den Aufbau einer grundlegenden Flask-Anwendung, indem Sie dieses Tutorial hier: https://www.tutorialspoint.com/flask/flask_sqlalchemy.htm und ich bin derzeit an dem Punkt, wo ich eine Verbindung zu meiner SQLITE3-Datenbank über herstellen muss SQLAlchemy. Um ehrlich zu sein geht es nicht so gut. Ich habe diesen Fehler: Nameerror: global Name 'Flash' ist nicht definiertNameError: globaler Name 'Flash' ist nicht definiert

Hier ist mein 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> 

Problem:

Ich weiß nicht, ob die Verbindung funktioniert oder nicht, auch wenn der Fehler den NameError ein gets fixiert, da es das erste Mal für mich ist, zuerst habe ich versucht, MySQL aber flask.ext.mysql ist veraltet , also habe ich versucht, zu SQLAlchemy und SQLite3 zu wechseln. Jede Hilfe wird für einen Neuling wie mich geschätzt. Vielen Dank!

Antwort

1

Fügen Sie Ihrem Code from flask import flash hinzu. Alle HTML-Dateien sind für die Frage irrelevant.

Verwandte Themen