Herramientas de usuario

Herramientas del sitio


comb:webapp0

¡Esta es una revisión vieja del documento!


Webapps with Flask

Starting point

Frameworks

First overview

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.restless import APIManager
 
app = Flask(__name__)
 
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///digin.db'
db = SQLAlchemy(app)
 
 
class Card(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    front = db.Column(db.Text)
    rever = db.Column(db.Text)
 
db.create_all()
 
api_manager = APIManager(app, flask_sqlalchemy_db=db)
api_manager.create_api(Card, methods=['GET', 'POST', 'DELETE', 'PUT'])
 
 
@app.route("/")
def hello():
    return "Hello World!"
 
if __name__ == "__main__":
    app.run()

It allows to access to different urls:

Model

Interact with model classes

Only importing the code file and using the class you will be interacting with the data base:

from person_app import Person
from person_app import db
p = Person(name='Juan', age=33)
Person.query.all()
db.session.add(p)
db.session.commit()

Relationships with SQLAlchemy

One to one

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person',
                                lazy='dynamic')
 
class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))

One to many

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address',
        backref=db.backref('person', lazy='joined'), lazy='dynamic')

Many to many

tags = db.Table('tags',
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
    db.Column('page_id', db.Integer, db.ForeignKey('page.id'))
)
 
class Page(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tags = db.relationship('Tag', secondary=tags,
        backref=db.backref('pages', lazy='dynamic'))
 
class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)

Define fields

class Deck(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Text, nullable=False)
    date = db.Column(db.DateTime, default=datetime.now())
    cards = db.relationship('Card', backref='deck', lazy='dynamic')
 
 
class Card(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    id_deck = db.Column(db.Integer,
                        db.ForeignKey('deck.id'),
                        nullable=False)
    front = db.Column(db.Text)
    rever = db.Column(db.Text)

HTML and JavaScript

Install JS libraries

$ sudo apt-get install nodejs
$ sudo apt-get install npm
$ sudo npm install -g bower
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
Inside the static folder...
$ bower install angular
comb/webapp0.1405778261.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)