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'),

 

时间: 2024-12-04 21:52:01

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

Struts 拦截器权限控制【通过拦截器实现登录后跳转到登录前页面】

应用情形:在web项目中,经常会遇到用户未登录或SESSION失效时用户发出非法的权限操作,如新闻的评论.文件的下载等等,在此我们可以使用struts拦截器对该用户发出的请求进行拦截,拦截后判断用户是否登录或SESSION是否有效,然后进行其正常操作.具体实例如下: 新建一个拦截器类UserInterceptor ,UserInterceptor.java代码如下 [java] view plaincopyprint? package com.hsinghsu.test.interceptor;

PHP登陆后跳转到登陆前页面实现思路及代码

 PHP登陆后跳转到登陆前页面,利用$_SERVER全局变量可以实现这个功能,下面有个不错的示例,希望对大家有所帮助 最近手上一个小项目让我接触到PHP编程,简单的登陆功能已经OK.可是在实际使用的时候发现一个问题:用户A发送一个链接给用户B,B打开时页面提示登陆,可是登陆成功后,却跳转到了首页,而并不是A发送的链接.为了有更好的用户体验,B登陆成功后应该自动跳转到登陆前的链接.查了PHP帮助手册,利用$_SERVER全局变量可以实现这个功能.    $_SERVER是PHP的一个超全局变量,关

由于查询条件比较多,查询后跳转到另一页面,如何吧这些查询条件传到结果页面,有什么好的方法?

问题描述 由于查询条件比较多,查询后跳转到另一页面,如何吧这些查询条件传到结果页面,有什么好的方法? 解决方案 解决方案二:是ASP.NET2.0么?如果是服务器按钮控件有个postbackurl这个属性设为要跳转的页面的URL然后在跳转后的页面可以得到前一个页面的控件然后访问相关控件的属性其他还有用session,cache等等都可以解决方案三:例子FirstPage.aspx<%@PageLanguage="C#"%><!DOCTYPEhtmlPUBLIC&quo

appwidget中加了listview,怎么让点击listview中的item后跳转到app主页面

问题描述 appwidget中加了listview,怎么让点击listview中的item后跳转到app主页面 android 中的appwidget中加了listview,怎么让点击listview中的item后跳转到app主页面(MainActivity.class) 解决方案 listview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?>

DJANGO里让用户自助修改密码

参考了网上的实现,最终实现的各代码如下:   changepwd.html模板文件: {% extends "Prism/index.html" %} {% load staticfiles %} {% block title %} 修改密码 {% endblock %} {% block heading %} {% endblock %} {% block content %} <div class="tm-middle"> <div class

DJANGO里让用户自助修改邮箱地址

因为在部署过程中会涉及用户邮件发送,如果有的同事不愿意收到太多邮件,则可以自己定义为不存在的邮箱. 我们在注册的时候,也不会写用户邮箱地址,那么他们也可以在这里自己更改. changeemail.html模板 {% extends "index.html" %} {% load staticfiles %} {% block title %} 修改邮箱 {% endblock %} {% block content %} <div class="tm-middle&qu

repeater控件里单击修改后跳转到另一页面修改,但是更新不了?

问题描述 前台代码:<asp:Repeaterid="Repeater1"runat="server"><ItemTemplate><div><tablealign="center"style="border:1pxsolid;width:80%;text-align:center;"><asp:PanelID="plItem"runat="s

使用Shiro实现登录成功后跳转到之前的页面_java

这个问题是之前在做登录注册模块时遇到的需求,如何用户直接访问登录页面,可以控制直接跳到首页,但是如果是用户没有登录直接访问了购物车等需要经过身份认证的页面,或者是因为session超时,用户需要重新登录,那么这时跳回之前的页面就是提升用户体验的事情.实现此功能比较好的方法是用ajax的方式登陆,这样直接在当前页面弹窗让用户登录既可,二是把用户未登录前的url存在session中,login成功之后先检查session中是否存在这样的一个url.下面通过一段代码给大家分享下: 项目中集成了shir

关于jsp上传图片后跳转到下个页面,页面的javascript失效的奇怪问题

问题描述 如果给的建议能解决问题将追加更多的分.javascript实现的功能如下见附件图片,能显示图片,能上传,但是选了文件上传后,再次回到此页面的时候 下面的这些就都不见了.因为Prepare函数没有触发.用的是struts2,首次进入页面,很正常,用javascript显示的上传图片的按钮 组件什么的都正常显示,但是当我选了一个图片上传,点击保存,然后后台保存完之后还是跳回到这个页面,这时候window.onload=Prepare;就不执行了,图片也不显示了,好像javascript都失