|
from flask import Flask, render_template, request, flash
import sqlite3
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import os
currentdirectory = os.path.dirname(os.path.abspath(__file__))
#create a Flask Instance
app = Flask(__name__)
#=====add database=====
app.config['SQLAlCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
# app.config['SECRET_KET'] = 'password'
#secret key
app.secret_key = 'password'
#initialize the database
db = SQLAlchemy(app)
#creat model
class Users(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.String(200), nullable = False)
email = db.Column(db.String(120), nullable = False, unique = True)
date_added = db.Column(db.DateTime, default = datetime.utcnow)
#create a string
def __repr__(self):
return '<Name %r>' % self.name
#Create a Form Class
class UserForm(FlaskForm):
name = StringField("Name", validators = [DataRequired()])
email = StringField("Email", validators = [DataRequired()])
submit = SubmitField('Submit')
#Create a Form Class
class NamerForm(FlaskForm):
name = StringField("What is your name", validators = [DataRequired()])
submit = SubmitField('Submit')
@app.route('/user/add', methods = ['GET', 'POST'])
def add_user():
name = None
#=====這個是根據上面的class UserForm(FlaskForm):=====
form = UserForm()
if form.validate_on_submit():
user = Users.query.filter_by(email = form.email.data).first()
if user is None:
user = Users(name = form.name.data, email = form.email.data)
db.session.add(user)
db.session.commit()
name = form.name.data
form.name.data = ''
form.email.data = ''
flash("User Added Successfully!")
our_users = Users.query.order_by(Users.date_added)
return render_template('add_user.html', form = form, name = name, our_users = our_users)
@app.route('/')
def index():
first_name = "John"
stuff = "This is bold text"
favourite_pizza = ["Pepperoni", "Cheese", 'Mashrooms', 41]
return render_template('index.html', first_name = first_name, stuff = stuff, favourite_pizza = favourite_pizza)
@app.route('/user/<name>')
def user(name):
return render_template("user.html", user_name = name)
#Invalid URL
@app.errorhandler(404)
def page_not_found(e):
return render_template("404.html"), 404
#Internal Server Error
@app.errorhandler(500)
def page_not_found(e):
return render_template("500.html"), 500
#create name page
@app.route('/name', methods = ['GET', 'POST'])
def name():
name = None
form = NamerForm()
#Validate form
if form.validate_on_submit():
name = form.name.data
form.name.data = ''
flash("Form Submitted Successfully")
return render_template("name.html", name = name, form = form)
if __name__ == '__main__':
app.run()Windows PowerShell尝试新的跨平台 PowerShell https://aka.ms/pscore6无法加载文件 C:\Users\user\PycharmProjects\flask\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_E xecution_Policies。 + CategoryInfo : SecurityError: (:) [],ParentContainsErrorRecordException + FullyQualifiedErrorId : UnauthorizedAccessPS C:\Users\user\PycharmProjects\flask> pythonPython 3.10.7 (tags/v3.10.7:6cc6b13, Sep 5 2022, 14:08:36) [MSC v.1933 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> from hello import dbC:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:". warnings.warn(C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATI** adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. warnings.warn(FSADeprecationWarning(>>> db.create_all()>>> exit()PS C:\Users\user\PycharmProjects\flask>
|
|