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比较难弄懂,不过功能已经实现了直接用就能够了

相关文章
相关标签/搜索