GAE-Python-Registration

import os
import re
from string import letters

import webapp2
import jinja2
import hashlib

from google.appengine.ext import db

template_dir = os.path.join(os.path.dirname(__file__), 'templates')
jinja_env = jinja2.Environment(loader = jinja2.FileSystemLoader(template_dir),
							   autoescape = True)
#定义user_key的亲节点
def user_key(name = 'default'):
    return db.key.from_path('User', name)
#定义数据模型User
class User(db.Model):
    username = db.StringProperty(required = True)
    password = db.StringProperty(required = True)
    created = db.DateTimeProperty(auto_now_add = True)
    last_modified = db.DateTimeProperty(auto_now = True)

    def render(self):
        return render_str("user.html", user = self)

#按照username查找用户
def user_search(username):
    return db.GqlQuery("select * from User where username='%s'" % username)
#验证cookie中的信息是否有效
def hash_str(s):
	return hashlib.md5(s).hexdigest()

def make_secure_val(s):
	return "%s|%s" % (s, hash_str(s))

def check_secure_val(h):
	val = h.split('|')[0]
	if h == make_secure_val(val):
		return val

def extract_cookie(s):
    return s.split('|')[0]
#使用正则表达式判断表单中的信息是否合法
USER_RE = re.compile(r"^[a-zA-Z0-9_-]{3,20}$")
def valid_username(username):
    return username and USER_RE.match(username)

PASSWORD_RE = re.compile(r"^.{3,20}$")
def valid_password(password):
    return password and PASSWORD_RE.match(password)

EMAIL_RE = re.compile(r"^[\S]+@[\S]+\.[\S]+$")
def valid_email(email):
    return not email or EMAIL_RE.match(email)
#渲染模板
def render_str(template, **params):
    t = jinja_env.get_template(template)
    return t.render(params)
#负责渲染模板的handler
class BaseHandler(webapp2.RequestHandler):
	def write(self, *a, **kw):
		self.response.out.write(*a, **kw)

	def render_str(self, template, **params):
		t = jinja_env.get_template(template)
		return t.render(params)

	def render(self, template, **kw):
		self.write(self.render_str(template, **kw))
#主handler
class MainHandler(BaseHandler):
    def get(self):
        self.render('main.html')
#注册或是登陆成功的handler
class WelcomeHandler(BaseHandler):
    def get(self):
        user_id = extract_cookie(self.request.cookies.get('user_id'))
        key = db.Key.from_path('User', int(user_id))
        user = db.get(key)
        if not user:
            self.error(404)
        else:
            self.render('welcome.html', username = user.username)
#处理注册的handler
class SignupHandler(BaseHandler):
    def get(self):
        self.render('registration.html')

    def post(self):
        have_error = False
        username = self.request.get('username')
        password = self.request.get('password')
        v_password = self.request.get('v_password')
        email = self.request.get('email')

        #验证表单合法性
        params = dict(username = username,
                      email = email)

        if not valid_username(username):
            params['username_error'] = "That's not a valid user name!"
            have_error = True

        if not valid_password(password):
            params['password_error'] = "That's not a valid password!"
            have_error = True
        elif password != v_password:
            params['verify_error'] = "Passwords didn't match!"
            have_error = True

        if not valid_email(email):
            params['email_error'] = "That's not a valid email!"
            have_error = True

        if not user_search(username):
            params['exist_error'] = "This user already exists!"
            have_error = True

        if have_error:
            self.render("registration.html", **params)
        else:
            u = User(username = username, password = password)
            u.put()
            self.response.headers.add_header('Set-Cookie', 'user_id=%s; Path=/' % str(u.key().id()))
            self.redirect('/welcome')
#打印所有用户信息的handler
class UserFront(BaseHandler):
    def get(self):
        users = db.GqlQuery("select * from User order by created desc limit 10")
        self.render('all-users.html', users = users)
#webapp2
app = webapp2.WSGIApplication([
    ('/', MainHandler),
    ('/signup', SignupHandler),
    ('/welcome', WelcomeHandler),
    ('/allusers', UserFront)
], debug=True)



内容概要:本文介绍了一个基于Matlab的综合能源系统优化调度仿真资源,重点实现了含光热电站、有机朗肯循环(ORC)和电含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)转气(P2G)技术的冷、热、电多能互补系统的优化调度模型。该模型充分考虑多种能源形式的协同转换与利用,通过Matlab代码构建系统架构、设定约束条件并求解优化目标,旨在提升综合能源系统的运行效率与经济性,同时兼顾灵活性供需不确定性下的储能优化配置问题。文中还提到了相关仿真技术支持,如YALMIP工具包的应用,适用于复杂能源系统的建模与求解。; 适合人群:具备一定Matlab编程基础和能源系统背景知识的科研人员、研究生及工程技术人员,尤其适合从事综合能源系统、可再生能源利用、电力系统优化等方向的研究者。; 使用场景及目标:①研究含光热、ORC和P2G的多能系统协调调度机制;②开展考虑不确定性的储能优化配置与经济调度仿真;③学习Matlab在能源系统优化中的建模与求解方法,复现高水平论文(如EI期刊)中的算法案例。; 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码和案例文件,按照目录顺序逐步学习,重点关注模型构建逻辑、约束设置与求解器调用方式,并通过修改参数进行仿真实验,加深对综合能源系统优化调度的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值