当前位置: 首页 > news >正文

Django里自定义用户登陆及登陆后跳转到登陆前页面的实现

因为下一步要和公司的UM帐号作集成,所以分离出登陆模块,及实现其基本功能是必不可少的。

登陆倒容易,但要实现在登陆后,跳转到登陆前的网页,且显示用户的登陆状态,花了点时间查找代码,

测试了五六种方式,终于搞定。连语法都OK啦。。

login.html:

{% extends "xxxx/index.html" %}
{% load staticfiles %}

{% block title %}用户登陆 {% endblock %}

{% block heading %}
    <h1>LOGIN </h2>
{% endblock %}

{% block content %}
   <div class="tm-middle">
        <div class="uk-container uk-container-center">
            <h3 class="tm-article-subtitle uk-margin-top">
                用户登陆
            </h3>
           <hr class="uk-grid-divider">

            <div class="uk-panel uk-panel-box uk-container-center uk-width-1-3">
                <h3 class="uk-panel-title"><i class="uk-icon-user"></i>用户登陆</h3>

                    <div class="uk-width-3-3">
                        <div>
                            <form action="{% url 'login' %}" class="uk-form uk-form-horizontal" role="form" method="post">
                            <form method="post" action="./?next={{ redirect_to }}">
                                {% csrf_token %}
                                <div class="uk-form-row">
                                    <label for="id_username" class="uk-form-label" style="color: #e28327">用户名:</label>
                                    <div class="uk-form-controls">
                                    <input type="text" name="username" maxlength="100"
                                        autocapitalize="off"
                                        autocorrect="off" class="form-control textinput textInput"
                                        id="id_username" required
                                        {% if form.username.value %}value="{{ form.username.value }}"{% endif %}>
                                    </div>
                                    {% if form.username.errors %}
                                        <p class="text-error">
                                            不正确的用户名
                                        </p>
                                    {% endif %}
                                </div>
                                <div class="uk-form-row uk-width-3-3">
                                    <label for="id_password" class="uk-form-label" style="color: #e28327">密码:</label>
                                    <div class="uk-form-controls">
                                        <input type="password" name="password" maxlength="100"
                                            autocapitalize="off" autocorrect="off" class="form-control textinput textInput"
                                            id="id_password" required>
                                        {% if form.password.errors %}
                                            <p class="text-error">
                                                不正确的用户名或密码
                                            </p>
                                        {% endif %}
                                    </div>
                                </div>
                                <input type="hidden" name="next" value="{{ request.GET.next }}">
                                {% if form.non_field_errors %}
                                    {% for error in form.non_field_errors %}
                                        <div class="well well-small text-error" style="border: none; color: red">请输入正确的用户名和密码</div>
                                    {% endfor %}
                                {% endif %}
                                <button type="submit" class="uk-button uk-button-success uk-margin-top uk-float-right" id="submit-id-submit">登录</button>
                            </form>
                        </div>
                    </div>
                </div>
        </div>
    </div>
    <div style="height:100px"></div>
    {% endblock %}

view.py:

 
  
from django.contrib.auth import authenticate, login, logout

@csrf_exempt
def user_login(request): redirect_to = request.REQUEST.get('next', '') if request.method == 'POST': username = request.POST.get('username', '') password = request.POST.get('password', '') user = authenticate(username=username, password=password) if user and user.is_active: login(request, user) return HttpResponseRedirect(request.POST.get('next', '/') or '/') return render_to_response("xxxx/login.html", locals(), RequestContext(request))

urls.py:

url(r'^accounts/login/$', user_login, name='login'),

 

相关文章:

  • PHP导入Excel和导出数据为Excel文件
  • DOM事件模型 DOM事件流 自定义事件(模拟事件)
  • 计算几何初步-三点顺序
  • 模块化,简单一点
  • 蓝牙(BLE)应用框架接口设计和应用开发——以TI CC2541为例
  • GET和POST的区别,何时使用POST?
  • Android 之内容提供程序(Content Provider)
  • 同源策略 跨域
  • matlab基本粒子群算法实现(三)
  • saltstack知道这些就很好用了
  • Es6中常用的新特性
  • Producer和Consumer
  • router 和route push和replace的区别
  • 测试php解析
  • Joomla 2.x, 3.x useful code cheatsheet
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 78. Subsets
  • android 一些 utils
  • Date型的使用
  • JavaScript 奇技淫巧
  • JavaScript的使用你知道几种?(上)
  • JavaScript设计模式与开发实践系列之策略模式
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • js如何打印object对象
  • MySQL-事务管理(基础)
  • php中curl和soap方式请求服务超时问题
  • vue数据传递--我有特殊的实现技巧
  • 给第三方使用接口的 URL 签名实现
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 手机端车牌号码键盘的vue组件
  • 通过npm或yarn自动生成vue组件
  • 一起参Ember.js讨论、问答社区。
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • Java数据解析之JSON
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​学习一下,什么是预包装食品?​
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ###51单片机学习(2)-----如何通过C语言运用延时函数设计LED流水灯
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (06)Hive——正则表达式
  • (2.2w字)前端单元测试之Jest详解篇
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)Linux 多线程条件变量同步
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .jks文件(JAVA KeyStore)
  • .NET DataGridView数据绑定说明
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .net连接MySQL的方法
  • .NET上SQLite的连接
  • .net中调用windows performance记录性能信息