bootstrap+flask写登录页面

flask是一个很小巧很方便的webframe,之前一直用django现在用尝试用flask感觉不错,准备用这个框架开发新的平台,首先就要有用户登录页面,用flask可以这样实现:

run.py

static

templates

前端就用bootstrap展示,login.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Welcome to login!</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- Le styles -->
    <link href="{{ url_for(‘static‘, filename=‘css/bootstrap.css‘) }}" rel="stylesheet">
    <style type="text/css">
      body {
        padding-top: 40px;
        padding-bottom: 40px;
        background-color: #f5f5f5;
      }

      .form-signin {
        max-width: 300px;
        padding: 19px 29px 29px;
        margin: 0 auto 20px;
        background-color: #fff;
        border: 1px solid #e5e5e5;
        -webkit-border-radius: 5px;
           -moz-border-radius: 5px;
                border-radius: 5px;
        -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
           -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
                box-shadow: 0 1px 2px rgba(0,0,0,.05);
      }
      .form-signin .form-signin-heading,
      .form-signin .checkbox {
        margin-bottom: 10px;
      }
      .form-signin input[type="text"],
      .form-signin input[type="password"] {
        font-size: 16px;
        height: auto;
        margin-bottom: 15px;
        padding: 7px 9px;
      }

    </style>
    <link href="{{ url_for(‘static‘, filename=‘css/bootstrap-responsive.css‘) }}" rel="stylesheet">

    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="../assets/js/html5shiv.js"></script>
    <![endif]-->

    <!-- Fav and touch icons -->
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-144-precomposed.png‘) }}">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-114-precomposed.png‘) }}">
      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-72-precomposed.png‘) }}">
                    <link rel="apple-touch-icon-precomposed" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-57-precomposed.png‘) }}">
                                   <link rel="shortcut icon" href="{{ url_for(‘static‘, filename=‘ico/favicon.png‘) }}">
  </head>

  <body>

    <div class="container">

      <form action="" method="post" class="form-signin">
        <h2 class="form-signin-heading">Login</h2>

     <input type="text" name="username" value="{{request.form.username}}"  class="input-block-level" placeholder="username">

        <input type="password" name="password" class="input-block-level" placeholder="password">
        <label class="checkbox">

          <input type="checkbox" value="remember-me"> Remember me
        </label>
        <button class="btn btn-primary" type="submit" value="Login" >Login</button>
      </form>

    </div> <!-- /container -->

    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-transition.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-alert.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-modal.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-dropdown.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-scrollspy.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-tab.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-tooltip.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-popover.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-button.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-collapse.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-carousel.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-typeahead.js‘) }}"></script>

  </body>
</html>
[[email protected] templates]# 
[[email protected] templates]# cat login.html 
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Welcome to login!</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <!-- Le styles -->
    <link href="{{ url_for(‘static‘, filename=‘css/bootstrap.css‘) }}" rel="stylesheet">
    <style type="text/css">
      body {
        padding-top: 40px;
        padding-bottom: 40px;
        background-color: #f5f5f5;
      }

      .form-signin {
        max-width: 300px;
        padding: 19px 29px 29px;
        margin: 0 auto 20px;
        background-color: #fff;
        border: 1px solid #e5e5e5;
        -webkit-border-radius: 5px;
           -moz-border-radius: 5px;
                border-radius: 5px;
        -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.05);
           -moz-box-shadow: 0 1px 2px rgba(0,0,0,.05);
                box-shadow: 0 1px 2px rgba(0,0,0,.05);
      }
      .form-signin .form-signin-heading,
      .form-signin .checkbox {
        margin-bottom: 10px;
      }
      .form-signin input[type="text"],
      .form-signin input[type="password"] {
        font-size: 16px;
        height: auto;
        margin-bottom: 15px;
        padding: 7px 9px;
      }

    </style>
    <link href="{{ url_for(‘static‘, filename=‘css/bootstrap-responsive.css‘) }}" rel="stylesheet">

    <!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
    <!--[if lt IE 9]>
      <script src="../assets/js/html5shiv.js"></script>
    <![endif]-->

    <!-- Fav and touch icons -->
    <link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-144-precomposed.png‘) }}">
    <link rel="apple-touch-icon-precomposed" sizes="114x114" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-114-precomposed.png‘) }}">
      <link rel="apple-touch-icon-precomposed" sizes="72x72" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-72-precomposed.png‘) }}">
                    <link rel="apple-touch-icon-precomposed" href="{{ url_for(‘static‘, filename=‘ico/apple-touch-icon-57-precomposed.png‘) }}">
                                   <link rel="shortcut icon" href="{{ url_for(‘static‘, filename=‘ico/favicon.png‘) }}">
  </head>

  <body>

    <div class="container">

      <form action="" method="post" class="form-signin">
        <h2 class="form-signin-heading">Login</h2>

     <input type="text" name="username" value="{{request.form.username}}"  class="input-block-level" placeholder="username">

        <input type="password" name="password" class="input-block-level" placeholder="password">
        <label class="checkbox">

          <input type="checkbox" value="remember-me"> Remember me
        </label>
        <button class="btn btn-primary" type="submit" value="Login" >Login</button>
      </form>

    </div> <!-- /container -->

    <!-- Le javascript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-transition.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-alert.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-modal.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-dropdown.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-scrollspy.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-tab.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-tooltip.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-popover.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-button.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-collapse.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-carousel.js‘) }}"></script>
    <script src="{{ url_for(‘static‘, filename=‘js/bootstrap-typeahead.js‘) }}"></script>

  </body>
</html>

run.py

from flask import * 

app = Flask(__name__)

@app.route("/login",methods=[‘POST‘,‘GET‘])

def login():
    	error = None
	if request.method == ‘POST‘:
		if request.form[‘username‘] != ‘admin‘ or request.form[‘password‘] != ‘admin123‘: 
	        	error= "sorry"
		else:
			return redirect(url_for(‘index‘))
	return render_template(‘login.html‘,error=error)

@app.route("/index")
def index():
	return render_template(‘index.html‘)

if __name__ == "__main__":
    app.run(
	    host="0.0.0.0", 
	    port=80, 
	    debug=True)

启动 python run.py,访问http://192.168.118.137/login

成功登录测试主页

时间: 2024-08-10 19:09:13

bootstrap+flask写登录页面的相关文章

flask用户登录页面

1 <div class="container"> 2 <div class="row"> 3 <div class="col-md-6 col-lg-offset-3"> 4 <form action="" method="post"> 5 <div class="form-group"> 6 <label>用户名

Vue.js写一个SPA登录页面的过程

技术栈 vue.js 主框架 vuex 状态管理 vue-router 路由管理 一般过程 在一般的登录过程中,一种前端方案是: 检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cookie或者本地存储的值): 如果有登录态则查询登录信息(uid,头像等...)并保存起来:如果没有则跳转到登录页: 在登录页面(或者登录框),校检用户输入信息是否合法: 校检通过后发送登录请求:校检不成功则反馈给用户: 登录成功则从后端数据中取出session信息保存登录状态(可能需要跳转);登录不成功

php写一个简洁的登录页面

在学php中,刚刚看完实战演练就写了个登录页面 1.表单解析图 这是我们要写的 先用html写个表单先 <html> <head> <title>login</title> <style> #dog{ text-align:center; } </style> </head> <body> <div id="dog"> <form method="POST&quo

一步一步理解 python web 框架,才不会从入门到放弃 -- 简单登录页面

上一节,我们基本了解了 Django 的一些配置,这一节,我们将通过一个简单的登录页面,进一步学习 Django 的使用. 新建项目 首先,新建一个 Django 项目,记得别弄错了哦. settings 中静态文件.templates 路径配置 这里我们已经写好了登录页面(点我下载),但是这一个登录页面不单只是一个 HTML 文件,还有一些静态文件.我们上一次已经说过了,想要在 HTML 中引进静态文件的话,需要在 settings 中配置静态文件夹.login.html 放在 templat

使用DRF和flask写注册模块差异总结

不接受反驳 本人很菜.写总结只是为了增加经验! 先说说个人flask和django框架的使用感受 用flask写了用户模块第三方扩展自己找包 django则不同了.django真的太大了.. 你如果真的用django去开发一个中小型项目那你感觉真的是杀鸡用牛刀 不过我个人认为用flask写起来舒服很多 因为django你要考虑的因素太多太多了.比如python2只认识mysqldb 但python3 却使用 pymysql 你还需要给数据库改名 等等 有人说flask只适合开发中小型项目...

CAS 4.0.x 自定义登录页面

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] CAS默认登录页面 复制一个新的页面管理页面 修改页面引用 修改casproperties 修改casLoginViewjsp页面 用过 CAS 的人都知道 CAS-Server端是单独部署的,作为一个纯粹的认证中心.在用户每次登录时,都需要进入CAS-Server的登录页填写用户名和密码登录,但是如果存在多个子应用系统时,它们可能都有相应风格的登录页面,我们希望直接在子系统中登录成功,而不是每次都要跳转到CAS的登录页去登

cas sso单点登录系列4_cas-server登录页面自定义修改过程(jsp页面修改)

转:http://blog.csdn.net/ae6623/article/details/8861065 SSO单点登录系列4:cas-server登录页面自定义修改过程,全新DIY. 目标: 下面是正文: 打开cas的默认首页,映入眼帘的是满眼的中文and英文混杂体,作为一名合格的用户,我表示很不开心. 于是,打开 Nodepad++,寻找C:\tomcat7\webapps\casServer\WEB-INF\view\jsp\default\ui \casLoginView.jsp这个页

局部刷新登录页面的实现方法

局部刷新的登录就是在一个页面上有一个登录框,登录之后交给后台异步处理,处理完成之后会在前端显示出来登录的用户信息,最常见的例子就是登陆优酷的时候我们可以看到URL登录之后没有变化(事实上,优酷用的方式不是局部刷新的方式,很明显可以看到整个页面刷新了,所以优酷的实现方式就是不是局部刷新,但是一时间没有找到例子).最近打算做一个博客的网站的项目,登录这里想要提供给用户提供一个更加良好的体验,就想到了利用ajax实现局部刷新,但是又想到了第二次登录的时候会需要判断登录过之后需要直接显示用户信息而不是登

一个登录页面

登录页面写起来很简单,但写多了每次都重新写一个的话还是觉得很费事的,所以写了个模板放这里,以后需要的话直接用这个改. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>登录</title> <style> #login { width: 290px; height: auto; overflow: hidden; border: so