常常会有这样的验证问题: 一个post表单,虽然有的位置规定了是int,但是用户总是尝试自己发送post数据,来模拟实际情况。所以是不能相信用户的输入的,故我们需要在views层收到数据时,对数据进行检验和转换。 这里推荐marshmallow,非常的方便强大。 dict格式化成dict from marshmallow import Schema, fields, post_loadfrom marshmallow.validate import OneOf# required表示这个参数必须要有,然后会先转换对应的类型,再通过validate函数验证class UserLoginSchema(Schema): username = fields.String(required=True) # 如果不指定required, 默认为False password = fields.String(required=True, validate=lambda x: len(x) > 0) phone = fields.Method('get_prefix_phone_code')
发表于 2017-08-28 17:43:10 | 条评论 | 阅读次数:238
主要是一些基础函数的处理,如如何处理和区分未登录的用户,如何记录已经登录的信息(即session),如何实现长久保存账号登录,如何处理异常等一些flask框架的基础问题。 一个维护性可用性高的网站,需要建立在一个好的运行平台的基础之上~ 目录 .gitignore app初始化 返回处理和错误处理 manager管理 登录模块的处理 视图层 目录 /app/consts/ #用来存放常量/app/database/ #用来放数据库的表/app/celery/ #用来存放一些schedule的代码/app/models/ #model层/app/libs/ #封装比较关键的库/app/utils/ #一些类似工具的代码/app/views/ #view层/app/templates/ #偶尔也会存在一些模板/app/tests/ #单元测试/app/__init__.py #放app的初始化的内容/cmd/ #存放一些bash脚本,如网站启动的脚本等/scripts/ #日常维护的python脚本config.py #配置,通常在.gitignore中config_template.py
发表于 2017-08-25 14:52:12 | 条评论 | 阅读次数:239
创建 # config.pySQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/mc-backend-test'# main.pyfrom flask.ext.sqlalchemy import SQLAlchemydb = SQLAlchemy(blog) # 从flask的app的config创建 model层 class MessageContent(db.Model): __tablename__ = 'message_content' # 对应表的名字 id = db.Column('id', db.Integer, primary_key=True) # 声明主键 user_id = db.Column('user_id', db.Integer, doc="用户id", default=0) group_id = db.Column('group_id', db.Integer, default=0, doc="属于哪一组的消息") created_at = db.Column('c
发表于 2017-07-18 20:38:21 | 条评论 | 阅读次数:296
感觉flask_cache的那个缓存并不是太好用,于是自己撸了一个缓存的装饰器,配合redis实现。 利用这个,就能用来再继续做,得到orm自动缓存的基类等等。 # -*- coding:utf8 -*-import picklefrom app_create import r, config# r是StrictRedisdef cache(id, timeout=config.CACHE_DEFAULT_TIME): def real_decorator(func): answer = None key = '%s%s' % (config.CACHE_PREFIX, id) if r.exists(key): try: answer = pickle.loads(r.get(key)) except: pass def wrapped(*args, **kwargs): if answer is not None:
发表于 2017-07-15 01:45:00 | 条评论 | 阅读次数:94
首先进入venv,然后直接用pip安装celery即可。 celery_server.py # coding: utf-8from celery import Celerymq = Celery('QwbCelery', broker='redis://localhost:6379/0', backend='redis://localhost:6379/0')mq = Celery('QwbCelery')mq.conf.update( CELERY_ACCEPT_CONTENT=['pickle'], CELERY_ENABLE_UTC=True, CELERY_RESULT_BACKEND='redis://localhost:6379/0', CELERYD_LOG_COLOR=False, BROKER_URL='redis://localhost:6379/0', CELERY_TIMEZONE='UTC',)mq.conf.update( CELERY_IMPORTS=[ 'tasks.task1', ]) IMPORTS中
发表于 2017-07-12 13:30:43 | 条评论 | 阅读次数:105
首先,在python官网下载MySQL-python的最新版本,下载zip的,解压之后,进入目录,然后 python setup.py install 如果是安装到venv虚拟环境里,需要首先进入到具体的操作目录,然后进入环境中,之后再安装setup.py . venv/bin/activate 之后可能会遇到许多错误.. 错误1: sh: mysql_config: not foundTraceback (most recent call last): File "setup.py", line 15, in <module> metadata, options = get_config() File "/home/zhxia/apps/source/MySQL-python-1.2.3/setup_posix.py", line 43, in get_config libs = mysql_config("libs_r") File "/home/zhxia/apps/source/MySQL-python-1.2.3/setup_posix.py",
发表于 2017-06-24 01:22:50 | 条评论 | 阅读次数:111
http://www.51nod.com/contest/problem.html#!problemId=1873 哇震惊了,竟然可以写的这么骚 # -*- coding:utf8 -*-import sysfrom decimal import *getcontext().prec = 1000 #设置小数点数a, b = raw_input().split()a, b = Decimal(a), int(b)ans = '{:f}'.format(a ** b)if ans[:2] == '0.': ans = ans[1:]while ans[-1:] == '0': ans = ans[:-1]if ans[-1:] == '.': ans = ans[:-1]print ans 直接把float转换成int竟然会有浮点误差!就算是刚读入的也不行 # -*- coding:utf8 -*-import sysa, b = raw_input().split()a, b = int(float(a)*1e6+1e-8), int(b)ans = str(a ** b)n = len(ans
发表于 2017-06-18 00:20:43 | 条评论 | 阅读次数:119
Copyright © 2017 - 2018 qwb's blog
blog.csustacm.com All Rights Reserved
Powered by qwb Contact me