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

简介: 因为下一步要和公司的UM帐号作集成,所以分离出登陆模块,及实现其基本功能是必不可少的。 登陆倒容易,但要实现在登陆后,跳转到登陆前的网页,且显示用户的登陆状态,花了点时间查找代码, 测试了五六种方式,终于搞定。

因为下一步要和公司的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'),

 

目录
相关文章
|
2月前
|
数据库 Python
django中数据库外键可以自定义名称吗
django中数据库外键可以自定义名称吗
|
3月前
|
安全 数据库 数据安全/隐私保护
|
2月前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
3月前
|
SQL Shell API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
python Django教程 之 模型(数据库)、自定义Field、数据表更改、QuerySet API
|
3月前
|
中间件 API 网络架构
Django后端架构开发:从匿名用户API节流到REST自定义认证
Django后端架构开发:从匿名用户API节流到REST自定义认证
43 0
|
5月前
|
数据安全/隐私保护 Python
必知的技术知识:django自定义分页器
必知的技术知识:django自定义分页器
|
6月前
|
运维 监控 Serverless
Serverless 应用引擎产品使用之阿里函数计算中在自定义环境下用debian10运行django,用官方层的python3.9,配置好环境变量后发现自定义层的django找不到了如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
|
6月前
|
数据处理 数据库 开发者
Django中的自定义管理命令:扩展管理功能的途径
【4月更文挑战第15天】Django教程:介绍如何创建和使用自定义管理命令以扩展框架功能。在应用的`management/commands`目录下创建Python文件,继承`BaseCommand`,实现`handle`方法。示例代码展示了如何定义参数和执行逻辑。自定义命令适用于批量数据处理、定期任务、项目初始化和自定义迁移操作。注意文件位置、命令安全性和稳定性。自定义管理命令能提升开发和维护效率。
|
6月前
|
关系型数据库 MySQL 数据库
Django实践-03模型-01表生成模型+学科页面与教师页面编写
Django实践-03模型-01表生成模型+学科页面与教师页面编写
Django实践-03模型-01表生成模型+学科页面与教师页面编写
|
6月前
|
算法 关系型数据库 API
Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
Python【算法中心 02】Web框架Django管理页面使用(管理员账号创建+API使用+应用添加)GreenPlum数据库引擎及API测试
108 0