基于python-flask制作的论坛

项目介绍

  • 首页: 论坛首页 由轮播图和帖子列表和板块列表,发布帖子的按钮和用户信息显示组成。
  • 首页导航栏

首先是首页导航栏,当用户没有登录的时候首页导航栏会显示为
在这里插入图片描述
这是用户没有登录的情况 最右边会有登录和注册的按钮。当用户点击注册时,会跳转到注册页面。
在这里插入图片描述
当用户登录后。
最右边会显示用户的用户名,点击时有三个选项,下面会对这几个功能进行介绍,当用户点击个人中心时会跳转到个人信息的页面。

  • 注册功能
    在这里插入图片描述需要用手机号进行注册,点击发送验证码的时候会出现倒计时,在一分钟之内完成注册内是手机验证码是有效的,要注册成功必须输入正确的短信验证码和图片验证码。点击立即注册即可完成用户的注册,之后会跳转到首页。首页导航条最右部分将会变成用户信息。
    注册页面和登录页面都是使用的同一个HTML模板。采用了flask中的jinjia2和模板继承{%extends %}的方法。
    因为需要用到get和post两种方法所以我们采用类视图的方法。
    其中我们通过request.referrer获取上一个跳转过来的页面,然后传递给html模板,最后通过js文件当注册完成时,跳转回上一个页面。当上一个页面不存在或者不满足安全要求或者就是当前页面时,跳转回首页。
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/front_signup.html',return_to=return_to)
        else:
            return render_template('front/front_signup.html')
    def post(self):
        form = Signupform(request.form)
        if form.validate():
            telephone =form.telephone.data
            user =Front_user.query.filter_by(telephone=telephone)
            if user:
                return restful.params_error('手机号已被注册!')
            else:
                username =form.username.data
                password =form.password1.data
                user =Front_user(telephone=telephone,username=username,password=password)
                db.session.add(user)
                db.session.commit()
                session[config.front_user_id] = user.id
                return  restful.sucess()
        else:
            print(form.get_error())
            return  restful.params_error(message=form.get_error())

采用了ajax的方法发送请求。

使用了阿里大于进行短信发送,使用官方的发送短信验证码的API,进行信息的配置后,调用send_sms函数即可进行信息的发送。Captcha.是之前定义的一个类用来生成验证码和图形验证码,验证码是随机生成的。当点击发送验证码的时候会调用这个接口。经过form表单(进行了一定的加密作用 防止利用接口无限发送短信。采用POST请求)验证后提取数据通过memcache在内存中对短信验证码进行存储。默认60S后过期。如果没有验证成功将会出现提醒。

@bp.route('/sms_captcha/',methods=['POST'])
def sms_captcha():
    #手机号码  时间戳 md5(ts+tele+salt)
    form =Smscaptchaform(request.form)
    if form.validate():
        telephone =form.telephone.data
        captcha = Captcha.gene_text(number=6)
        result = alidayu.send_sms(131212330, telephone, "玉子论坛", "SMS_xxxxxx", {
   'code': captcha})
        if result:
            zlcache.set(telephone,captcha)
            return restful.sucess()
        else:
            return restful.params_error('短信验证码发送失败')
    else:
        return  restful.params_error(message='参数错误!'
  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值