week10-实现网站的登录、注册功能

本周的任务要求如下:

要求用flask建设一个课题组网站,具体要求如下:
1)风格可大致如上周所给<a target=_blank target="_blank" href="http://vision.stanford.edu/index.html">范例网站</a>
2)网站为双语,就是跟<a target=_blank target="_blank" href="http://www.suda.edu.cn/">苏大网站</a>一样,每一块文本内容都有中文和英语两种语言(两个对应页面,要求录入者在中文和英文描述框都输入);
3)角色分四类:管理者(就是老师)、内容添加者(老师指定的课题组同学)、课题组成员和普通浏览者;
4)数据库还是mysql;
5)网站内容分老师介绍、课题组同学介绍、课题组活动和成果与资源四部分;
其中老师介绍分成:简介、项目列表、论文列表、专利列表等几个模块;
课题组同学介绍:每个同学的姓名、身份、照片等信息,可以链接一个超链接到同学个人网页(若有)
课题组活动:课题组的一些学术和日常交流活动,如一次讨论会、一次聚会。每一次活动有一个日志和一组照片。
成果与资源:如果我们将来有一些好的创意变成了软件产品,可以放这里;另外可以放一些机器学习资源链接。
网站内容的每一个内容都分成有权限查看和普通内容;前者仅对课题组成员可见或下载;
6)管理者可以管理所有网站内容(增删减),内容添加者可以对指定网站内容操作(如课题组活动部分),课题组成员登录后可以浏览相关内容,普通浏览者只能浏览非权限内容。

0.网站的内容抄的是苏州大学官网。css样式抄的是范例网站。
1.这次我通过Dreamweaver来完成html代码的设计和编写。它的优点是能够实时的将代码的变化立即表现出来,对我这种没有系统学习过html的人有很大的帮助。

2.截止到目前完成的部分任务:注册、登录、部分网页的实现。



注册:python代码部分:

@app.route('/regist.html',methods = ['GET','POST'])
def regist():
    if request.method == 'POST':
        try:
            conn = MySQLdb.connect(host= "localhost",user = "root",passwd = "root",db = "myblog",charset='UTF8')
        except Exception,e:
            print e
            sys.exit()
        # 获取cursor对象来进行操作
        cursor = conn.cursor()

        # 创建表
        sql = "create table if not exists regist(username varchar(20) primary key ,password varchar(20),priority varchar(20))"
        cursor.execute(sql)


        username = request.form.get('username')
        password = request.form.get('password')
        password2 = request.form.get('password2')
        priority = request.form.get('priority')

        if password == password2:
            sql = "insert into regist values ('%s','%s','%s')"% (username,password,priority)
            while (True):
                try:
                    cursor.execute(sql)
                    conn.commit()
                    break
                except Exception,e:
                    return '用户名已存在,请重新注册!'
            cursor.close()
            conn.close()
            return "%s,%s" %(username,priority)
        else:
            return '两次输入的密码不同,请重新注册。'

    else:
        return render_template('regist.html')
html部分:

    <!DOCTYPE html>  
    <html lang="zh-CN"> 
    <head> 
        <meta charset="utf-8"> 
        <title>注册</title> 
        <meta name="keywords" content="注册" /> 
        <meta name="description" content="注册页面、http://www.acfun.tv/reg/" /> 
    </head> 
    <body> 
        <form method="post" >
            <h1 class="title">注册</h1>
            <div class="area">
                <label for="ipt-username-reg" class="l">账号</label>
                <input required="required" placeholder="请输入账号" id="ipt-username-reg" name="username" spellcheck="false" data-name="昵称" data-direction="right" data-length="2,10" class="name l" type="text">
                <span class="clearfix"></span>
            </div>
            <div class="area">
                <label for="ipt-pwd-reg" class="l">密码</label>
                <input required="required" id="ipt-pwd-reg" name="password" data-name="密码" data-length="6,32" data-direction="right" placeholder="请输入密码" class="password l" type="password">
                <span class="clearfix"></span>
            </div>
            <div class="area">
                <label for="ipt-repwd-reg" class="l">确认密码</label>
                <input required="required" id="ipt-repwd-reg" name="password2" data-name="确认密码" data-length="6,32" data-direction="right" placeholder="确认密码" class="re-password l" type="password">
                <span class="clearfix"></span>
            </div>
            <!-- <div class="area">
                <label for="ipt-captcha-reg" class="l">验证码</label>
                <input required="required" placeholder="请输入验证码" id="ipt-captcha-reg" autocomplete="off" name="captcha" data-name="验证码" data-direction="bottom" data-length="4,4" class="captcha l" type="text">
                <img src="/captcha.svl" οnclick="this.src='/captcha.svl?d='+new Date()" class="captcha-pic"><span class="clearfix"></span>
            </div> -->
            <div>
                <label for="ipt-priority-reg" class="l">账号权限</label>
                <select name="priority">
                <option value="controller">controller</option>
                <option value="adder">adder</option>
                <option value="member of group">member of group</option>
                </select>
                <!-- <input type='radio' name = 'priority' value = 'controller'/>controller
                <input type='radio' name = 'priority' value = 'adder'/>adder
                <input type='radio' name = 'priority' value = 'member'/>member of group
                <input type='radio' name = 'priority' value = 'viewer'/>viewer -->
            </div>
            <div class="area-tool">
                <input type = 'submit' value = '注册' />
                <input type="reset" value="重置" />
                <a href="/login.html">返回登录</a>
                <span class="clearfix"></span>
            </div>
        </form>
    </body> 
    </html>
网页:


这里通过与sql的交互实现了注册功能:

mysql> select * from regist;
+----------+----------+------------+
| username | password | priority   |
+----------+----------+------------+
| wdd      | 123      | adder      |
| wdd123   | 123      | controller |
+----------+----------+------------+
2 rows in set (0.00 sec)

1.每注册一个用户就在sql中录入一条(username,password,priority)信息。其中username设为主键,这样适当的解决引发的主键冲突异常就可以避免账号的重复注册。

注册成功:



2.登录:

python代码:

@app.route('/login.html',methods = ['GET','POST'])
def login():
    if request.method == 'POST':
        username = request.form.get('username')
        password = request.form.get('password')
        try:
            conn = MySQLdb.connect(host= "localhost",user = "root",passwd = "root",db = "myblog",charset='UTF8')
        except Exception,e:
            print e
            sys.exit()
        # 获取cursor对象来进行操作
        cursor = conn.cursor()

        #匹配账号密码优先权
        sql = "select * from regist where username = '%s'" %(username)
        cursor.execute(sql)
        alldata = cursor.fetchall()

        cursor.close()
        conn.close()
        if alldata:
            if alldata[0][1] == password:
                if alldata[0][2] == 'controller':
                    return render_template('controller.html')
                elif alldata[0][2] == 'adder':
                    return render_template('adder.html')
                elif alldata[0][2] == 'member of group':
                    return render_template('member of group.html')
                else :
                    return render_template('index.html')
            else:
                return "密码错误!请重新登录"
        else:
            return '很抱歉,不存在这个账号,您可以注册它。'

    else:
       return render_template('login.html')

html代码:

    <!DOCTYPE html>  
    <html lang="zh-CN"> 
    <head> 
        <meta charset="utf-8"> 
        <title>登录</title> 
        <meta name="keywords" content="登录" /> 
        <meta name="description" content="登录页面、http://www.acfun.tv/login/" /> 
    </head> 
    <body> 
        <form method="post" >
            <h1 class="title">登录</h1>
            <div class="area">
                <label for="ipt-username-login" class="l">账号</label>
                <input required="required" placeholder="请输入账号" id="ipt-username-reg" name="username" spellcheck="false" data-name="昵称" data-direction="right" data-length="2,10" class="name l" type="text">
                <span class="clearfix"></span>
            </div>
            <div class="area">
                <label for="ipt-pwd-reg" class="l">密码</label>
                <input required="required" id="ipt-pwd-reg" name="password" data-name="密码" data-length="6,32" data-direction="right" placeholder="请输入密码" class="password l" type="password">
                <span class="clearfix"></span>
            </div>
            <!-- <div class="area-tool">
                <input type = 'submit' value = '注册' />
                <input type="reset" value="重置" />
                <a href="/login.html">返回登录</a>
                <span class="clearfix"></span>
            </div> -->
            <div class="area-tool">
                <input type = 'submit' value = '登录' />
                <input type="reset" value="重置" />
                <a href="/regist.html">注册账号</a>
            </div>
            
        </form>

    <h3><a href="/">返回主页</a>  </h3>
    </body> 
    </html> 

网页:

账号会与sql中的账号匹配,若没有怎会提示错误:

然后匹配密码,若不匹配怎提示错误:

然后根据'priority'属性的值转到不同的网页。



部分页面展示:



注:所做的网页内容并没有符合要求。照抄苏大官网只是因为方便展示,在网站完成后会修改为正确的内容。


现在github打不开。完成的代码稍后放在 github 上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值