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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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),

 

以上是关于Django里自定义用户登陆及登陆后跳转到登陆前页面的实现的主要内容,如果未能解决你的问题,请参考以下文章

用java做好的登陆界面,当登陆成功后跳转到下个页面的代码是啥?

在jsp中,如何实现普通用户和管理员登陆后跳转到不同的点jsp页面

Ajax登陆,使用Spring Security缓存跳转到登陆前的链接

验证登陆后跳转原路径

从user 登陆開始

Django中 @login_required用法简介