djaong flask文檔總結

最近使用的是flask框架比較多,屬於靈活的框架
一,flask
APScheduler這個插件在項目中使用較多,就想熟悉一下html

from flask import Flask
from flask_apscheduler import APScheduler # 引入APScheduler

#任務配置類
class SchedulerConfig(object):
    JOBS = [
        {
            'id': 'print_job', # 任務id
            'func': '__main__:print_job', # 任務執行程序
            'args': None, # 執行程序參數
            'trigger': 'interval', # 任務執行類型,定時器
            'seconds': 5, # 任務執行時間,單位秒
        }
    ]
#定義任務執行程序
def print_job():
    print("I'm a scheduler!")
    
app = Flask(__name__)

#爲實例化的flask引入定時任務配置
app.config.from_object(SchedulerConfig())

if __name__ == '__main__':
    scheduler = APScheduler()  # 實例化APScheduler
    scheduler.init_app(app)  # 把任務列表載入實例flask
    scheduler.start()  # 啓動任務計劃
    app.run(host="0.0.0.0", port=8888)

二 flask 鏈接數據庫
本人項目是直接鏈接mongodb的,沒有像鏈接mysql數據庫這麼麻煩
flask 鏈接mysql
導入第三方鏈接庫sql點金術

from flask_sqlalchemy import SQLAlchemypython

創建對象

app = Flask(name)mysql

載入配置文件

app.config.from_pyfile('config.ini')git

#指定數據庫鏈接還有庫名 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@127.0.0.1:3306/myflask?charset=utf8' 指定配置,用來省略提交操做 app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True 創建數據庫對象

db = SQLAlchemy(app)github

創建數據庫類,用來映射數據庫表,將數據庫的模型做爲參數傳入

class User(db.Model):面試

#聲明表名

__tablename__ = 'user'

#創建字段函數

id = db.Column(db.Integer,primary_key=True)

name = db.Column(db.String(200))

password = db.Column(db.String(200))sql

數據庫的查詢操做(查)

@app.route("/select")mongodb

def select_user():數據庫

#簡單的全量查詢

# 翻譯爲 select * from user

ulist = User.query.all()

print(ulist)

for item in ulist:

    print(item.name)



#只取一條

# 翻譯爲 select * from user limit 1

ulist = User.query.first()

print(ulist)





#使用原生的sql語句

# 翻譯爲 select * from user order by id desc limit 1,2

items = db.session.execute(' select * from user order by id desc ')

#將結果集強轉爲list

items = list(items)





#使用原生語句進行修改操做

#db.session.execute(" update user set password = '321321' where id = 6 ")



#將動態數據傳遞給模板

return render_template('day5.html',items=items)
數據庫的修改操做(改)

@app.route("/edit")django

def edit_user():

#根據某個字段作修改操做

#翻譯爲 update user set name = '張三' where id = 2

User.query.filter_by(id=3).update({'name':'張三'})

return '這裏是修改操做'
數據庫的刪除操做(刪)

@app.route("/del")

def del_user():

#根據某個字段作刪除,filter_by能夠理解爲where條件限定

# 翻譯爲 delete from user where id = 1

User.query.filter_by(id=1).delete()

return '這裏是刪除操做'
數據庫的入庫操做(增)

@app.route("/")

def index():

#增,入庫邏輯

#聲明對象

user = User(name='你好你好',password='456456')

#調用添加方法

db.session.add(user)

#提交入庫

#db.session.commit()



return '這裏是首頁'

flask 鏈接mongo只須要下載pymogo直接鏈接就能夠了

flask jwt熟悉
用於用戶登陸驗證,能夠下載插件jwt,也能夠下載flask內部的插件flask-jwt進行使用,屬於簡易的一個功能

flask config.ini配置
通常服務須要配置文件,測試是啓動的配置文件和上線時啓動的文件
單獨的配置文件
程序逐漸變大時,配置也逐漸增多,寫在主腳本里太佔地方,不夠優雅(這時你應該已經把表單,路由,數據庫模型等等分紅獨立的文件了。關於大型項目結構,後續會總結)。咱們能夠建立一個單獨的配置文件。和上面一樣的配置,如今能夠改寫爲:

config.py

SECRET_KEY = 'some secret words'
DEBUG = True
ITEMS_PER_PAGE = 10
在建立程序實例後導入配置:

import config

...
app = Flask(name)
app.config.from_object(config)
...
flask 的思惟導圖

flask 上下文
Flask 建立應用上下文
2021-06-28 15:36 更新
有兩種方式來建立應用上下文。第一種是隱式的:不管什麼時候當一個請求上下文被壓棧時, 若是有必要的話一個應用上下文會被一塊兒建立。因爲這個緣由,你能夠忽略應用 上下文的存在,除非你須要它。

第二種是顯式地調用 ​app_context()​ 方法:

from flask import Flask, current_app

app = Flask(name)
with app.app_context():
# within this block, current_app points to app.
print current_app.name
在配置了 ​SERVER_NAME​ 時,應用上下文也被用於 ​url_for()​ 函 數。這容許你在沒有請求時生成 URL

二django學習

django 如今主要使用的是restframework這個插件,我面試問的也很是多,能夠熟悉熟悉

Install using pip, including any optional packages you want...

pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
...or clone the project from github.

git clone git@github.com:encode/django-rest-framework.git
Add 'rest_framework' to your INSTALLED_APPS setting.(記得在setting文件裏面添加rest_framework,固然,你還得先安裝djangorestframework)

INSTALLED_APPS = (
...
'rest_framework',
)
If you're intending to use the browsable API you'll probably also want to add REST framework's login and logout views. Add the following to your root urls.py file.

若是您打算使用可瀏覽的API,您可能還須要添加REST框架的登陸和註銷視圖。將如下內容添加到您的根urls.py文件中。

urlpatterns = [
...
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
Note that the URL path can be whatever you want, but you must include 'rest_framework.urls' with the 'rest_framework' namespace. You may leave out the namespace in Django 1.9+, and REST framework will set it for you.

請注意,URL路徑能夠是任何你想要的,但你必須包括'rest_framework.urls'與'rest_framework'命名空間。您能夠在Django 1.9+中省略命名空間,REST框架將爲您設置。

Quickstart
Can't wait to get started? The quickstart guide is the fastest way to get up and running, and building APIs with REST framework.

說了一堆,直接來個demo,快速上手,看看效果。官網請看:http://www.django-rest-framework.org/tutorial/quickstart/

首先確定得先建立django程序啦,接着建立APP,這裏我建立了一個quickstart的app。

Now sync your database for the first time:同步數據庫
python manage.py migrate
建立超級用戶用於登錄。We'll also create an initial user named admin with a password of password123. We'll authenticate as that user later in our example.
python manage.py createsuperuser

Serializers
首先咱們要定義一些序列化程序。在quickstart這個APP下建立serializers文件,用於展現數據。

First up we're going to define some serializers. Let's create a new module named tutorial/quickstart/serializers.py that we'll use for our data representations.
from django.contrib.auth.models import User, Group
from rest_framework import serializers

class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')

class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
Notice that we're using hyperlinked relations in this case, with HyperlinkedModelSerializer. You can also use primary key and various other relationships, but hyperlinking is good RESTful design.

請注意,在這種狀況下,咱們正在使用超連接關係HyperlinkedModelSerializer。您還可使用主鍵和各類其餘關係,但超連接是好的RESTful設計。

Views
Right, we'd better write some views then. Open tutorial/quickstart/views.py and get typing. 寫一些視圖,查詢數據。

class Article(models.Model):
"""文章資訊"""
title = models.CharField(max_length=255, unique=True, db_index=True, verbose_name="標題")
source = models.ForeignKey("ArticleSource", verbose_name="來源")
article_type_choices = ((0, '資訊'), (1, '視頻'))
article_type = models.SmallIntegerField(choices=article_type_choices, default=0)
brief = models.TextField(max_length=512, verbose_name="摘要")
head_img = models.CharField(max_length=255)
content = models.TextField(verbose_name="文章正文")
pub_date = models.DateTimeField(verbose_name="上架日期")
offline_date = models.DateTimeField(verbose_name="下架日期")
status_choices = ((0, '在線'), (1, '下線'))
status = models.SmallIntegerField(choices=status_choices, default=0, verbose_name="狀態")
order = models.SmallIntegerField(default=0, verbose_name="權重", help_text="文章想置頂,能夠把數字調大")
comment_num = models.SmallIntegerField(default=0, verbose_name="評論數")
agree_num = models.SmallIntegerField(default=0, verbose_name="點贊數")
view_num = models.SmallIntegerField(default=0, verbose_name="觀看數")
collect_num = models.SmallIntegerField(default=0, verbose_name="收藏數")

tags = models.ManyToManyField("Tags", blank=True, verbose_name="標籤")
date = models.DateTimeField(auto_now_add=True, verbose_name="建立日期")

def __str__(self):
    return "%s-%s" % (self.source, self.title)

接下來,只須要寫一個序列化器,即可以輕鬆對數據的進行獲取,並且代碼看起來特別簡潔。

在 serilallzer.py 文件能夠這樣寫 若是想使用哪一個model進行序列化,照此類推便可 fields 若是想要獲取全部字段, 使用" all" fields 若是隻是想要獲取一部分數據呢, 那麼在 fields 中加入所序列化的model的字段便可

from rest_framework.serializers import ModelSerializer

class ArticleSerializer(ModelSerializer):
class Meta:
model = models.Article
fields = ("id", "title", "article_type", "content", ) or "all"

這個restframe比較難弄懂,不過功能已經實現了直接用就能夠了

相關文章
相關標籤/搜索