BBS论坛(十四)
14.1注册完成跳到上一个页面
(1)front/form.py
# front/forms.py
__author__ = 'derek' from ..forms import BaseForm
from wtforms import StringField
from wtforms.validators import Regexp,ValidationError,EqualTo
from utils import zlcache class SignupForm(BaseForm):
telephone=StringField(validators=[Regexp(r'1[3578]\d{9}',message='请输入正确格式的手机号码')])
sms_captcha=StringField(validators=[Regexp(r'\w{4}',message='请输入四位短信验证码')])
username=StringField(validators=[Regexp(r'.{3,15}',message='用户名长度在3-15位之间')])
password=StringField(validators=[Regexp(r'[0-9a-zA-Z_\.]{6,15}',message='请输入正确格式的密码')])
password2=StringField(validators=[EqualTo('password',message='两次输入的密码不一致')])
graph_captcha=StringField(validators=[Regexp(r'\w{4}',message='图形验证码不正确')]) def validate_sms_captcha(self,field):
# 必须传入的参数self,field
# 使用fields.data和使用self.sms_captcha.data是一样的 sms_captcha=field.data
telephone=self.telephone.data
if sms_captcha != '':
sms_captcha_mem=zlcache.get(telephone)
if not sms_captcha_mem or sms_captcha_mem.lower() != sms_captcha.lower():
raise ValidationError(message='短信验证码错误') def validate_graph_captcha(self,field):
graph_captcha=field.data
if graph_captcha != '':
graph_captcha_mem=zlcache.get(graph_captcha.lower())
if not graph_captcha_mem:
raise ValidationError(message='图形验证码错误')
(2)utils/safeutils.py
from urllib.parse import urlparse,urljoin
from flask import request def is_safe_url(target):
ref_url = urlparse(request.host_url)
test_url = urlparse(urljoin(request.host_url, target))
return test_url.scheme in ('http', 'https') and \
ref_url.netloc == test_url.netloc
(3)front/views.py
class SignupView(views.MethodView):
def get(self):
return_to = request.referrer
if return_to and return_to != request.url and safeutils.is_safe_url(return_to):
return render_template('front/signup.html', return_to=return_to)
else:
return render_template('front/signup.html') def post(self):
form = SignupForm(request.form)
if form.validate():
telephone = form.telephone.data
username = form.username.data
password = form.password.data
user = FrontUser(telephone=telephone, username=username, password=password)
db.session.add(user)
db.session.commit()
return restful.success()
else:
print(form.get_error())
return restful.params_error(message=form.get_error())
(4)front/signup.html
<div class="form-group">
<span style="display: none" id="return-to-span">{{ return_to }}</span>
<button id="submit-btn" class="btn btn-warning btn-block">立即注册</button>
</div>
(6)front/signup.js
$(function () {
$('#submit-btn').on('click', function () {
var telephone_input = $('input[name=telephone]');
var sms_captcha_input = $('input[name=sms_captcha]');
var username_input = $('input[name=username]');
var password_input = $('input[name=password1]');
var password2_input = $('input[name=password2]');
var graph_captcha_input = $('input[name=graph_captcha]');
var telephone = telephone_input.val();
var sms_captcha = sms_captcha_input.val();
var username = username_input.val();
var password = password_input.val();
var password2 = password2_input.val();
var graph_captcha = graph_captcha_input.val();
zlajax.post({
'url': '/signup/',
'data': {
'telephone': telephone,
'sms_captcha': sms_captcha,
'username': username,
'password': password,
'password2': password2,
'graph_captcha': graph_captcha
},
'success': function (data) {
if (data['code'] == 200) {
var return_to = $('#return-to-span').text();
if (return_to) {
window.location = return_to
} else {
window.location = '/'
}
} else {
zlalert.alertInfoToast(data['message']);
}
},
'fail': function () {
zlalert.alertNetworkError();
}
});
});
});
BBS论坛(十四)的更多相关文章
- BBS论坛(四)
4.1.cms登录页面csrf保护 (1)Perfect_bbs.py from flask_wtf import CSRFProtect CSRFProtect(app) 添加csrf保护后,现在再 ...
- Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点
开发一个简单的BBS论坛 项目需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被 ...
- python 学习笔记二十 django项目bbs论坛
项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可 ...
- python第一百三十天 ---简单的BBS论坛
简单的BBS论坛 实现功能 git仓库地址:https://github.com/uge3/BBS 1.整体参考“抽屉新热榜” + “博客园” 2.实现不同论坛版块 3.帖子列表展示 4.个人博客主页 ...
- javaSE第十四天
第十四天 92 1. 正则表达式(理解) 92 (1)定义: 92 (2)常见规则 92 A:字符 92 B:字符类 93 C:预定义字符类 93 D:边界匹 ...
- centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ,lsof ,pidof 第十四节课
centos Linux系统日常管理1 cpuinfo cpu核数 命令 w, vmstat, uptime ,top ,kill ,ps ,free,netstat ,sar, ulimit ...
- 如鹏网学习笔记(十四)ASP.NET
Asp.net笔记 一.Socket类 进行网络编程的类,可以在两台计算机之间进行网络通讯 过程: 向服务器发送指令: GET /index.html HTTP/1.1 Host:127.0.0.1: ...
- 开源BBS论坛软件推荐
七款开源BBS论坛软件推荐(1) 本文介绍了七个开源的BBS论坛软件(在英文界一般叫做Forum).可能国内的朋友们比较熟悉Discuz!和PHPwind,但其实我们的选择还是很多的,而且下面介绍的这 ...
- m_Orchestrate learning system---二十四、thinkphp里面的ajax如何使用
m_Orchestrate learning system---二十四.thinkphp里面的ajax如何使用 一.总结 一句话总结:其实ajax非常简单:前台要做的事情就是发送ajax请求过来,后台 ...
- Django项目 BBS论坛
BBS论坛 一.项目表分析 二.自定义form组件 三.注册功能 四.BBS论坛 登录功能
随机推荐
- lxml爬取实验
1.豆瓣 爬取单个页面数据 import requests from lxml import etree #import os url = "https://movie.douban.com ...
- 559. Maximum Depth of N-ary Tree
https://leetcode.com/problems/maximum-depth-of-n-ary-tree/description/ 非常简单的题目,连edge case 都没有.思路就是:最 ...
- ES6---箭头函数()=>{} 与function的区别(转载)
1.箭头函数与function定义函数的写法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, ...
- python书籍推荐:Head First Python(中文版)
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/64/ 来源:python黑洞网,专注 ...
- 20175305张天钰《java程序设计》第八周学习总结
<java程序设计>第八周学习总结 第十五章 泛型与集合框架 一.知识点学习 1.String类 1.String类不可以有子类. 2.用户无法输出String对象的引用,输出的是字符序列 ...
- Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹——Jason niu
#Py之Crawler:爬虫利用随机选取代理访问服务器的方法实现下载某网址上所有的图片到指定文件夹 import urllib.request import os import random def ...
- less是什么?直接用css好还是less好
问:Less是一个动态CSS语言框架,Less扩展了CSS的动态特性 [1]:从实现角度来说,直接用css看起来能方便一些,而less还要编译? [2]:技术上好像灵活,但是从使用者的角度来说,css ...
- fiddler 应用
一 pc 端抓取 例:本地调试代码,转换域名,请求网络数据 1:设置代理,以smart header 为例 ip为 127.0.0.1 端口与自己的fillder一致,注意将不代理的地址列表做修改 ...
- go-mod 入门
Q群有人问go mod 问题,自己也忘了些.顺便再整理下. GO111MODULE可以设置为三个字符串值之一:off,on或auto(默认值). off 则go命令从不使用新模块支持.它查找vendo ...
- 安装使用eclipse
安装使用eclipse 目标 java学习需要,老师说要安装eclipse,,其实已经下了IDEA了,不过还是听老师的比较好( 准备 jre 也就是java运行环境,因为之前就下了jdk(里面包含jr ...