Django 登录页面的实现

一.目的

Django有自带的登录页面,但是的颜色和页面的样式不是特别的喜欢。因此,利用ace的登录页面(图1)来模仿做一个自己的登录页面(图2)。根据实际的应用需要,去掉了Remember Me、Or Login Using、以及register和forgot password等功能。确切的来说,就是该页面只有“登录/验证”功能。    

二.所用方法

  和所有的Django方法一样,创建好models后,建立登录所需的数据库。

  将修改好的模版文件放在app目录下的templates文件夹中,将ace的相关文件放在project目录下的static文件夹中,并在html模版中,css的引用路径改为static下的路径。

  在app文件下创建form.py:

# -*- coding: utf-8 -*-

from django import forms

class UserForm(forms.Form):
    username = forms.CharField(
            required=True,
            widget=forms.TextInput(
                attrs={
                    ‘placeholder‘: ‘Username‘,
                }
            )
    )
    password = forms.CharField(
            required=True,
            widget=forms.PasswordInput(
                attrs={
                    ‘placeholder‘: ‘Password‘,
                }
            )
    )

    def clean(self):
        if not self.is_valid():
            raise forms.ValidationError(u"用户名和密码为必填项")
        else:
            cleaned_data = super(UserForm, self).clean()

  在app下创建views文件:

# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response, RequestContext
from Login.models import UAVUser, UAVAuthority
from forms import UserForm
def uavlogin(request):
    if request.method == ‘GET‘: #页面初次显示
        form = UserForm()
        return render_to_response(‘login.html‘, RequestContext(request, {‘form‘: form}))
    else:
        form = UserForm(request.POST)    #页面提交数据
        if form.is_valid():
            username = request.POST.get(‘username‘)
            password = request.POST.get(‘password‘)
            UserJuage = UAVUser.objects.filter(name=username, passwd=password)   #和数据内的数据比对,返回一个set数据
            if UserJuage:
                userauth = UserJuage[0].role    #获取用户角色
                userunit = UserJuage[0].unit    #获取用户单位
                return render_to_response(‘test.html‘, {‘username‘: username, ‘userauth‘: userauth, ‘userunit‘: userunit}, context_instance=RequestContext(request))    #将数据提交给test.html用于测试
            else:
                return render_to_response(‘login.html‘, RequestContext(request, {‘form‘: form, ‘password_is_wrong‘: True}))    #如果比对不成功,返回一个错误提示password_is_wrong
        else:
            return render_to_response(‘login.html‘, RequestContext(request, {‘form‘: form}))       #如果页面数据提交有问题,刷新页面 

  编辑login.html模版:

<div class="position-relative">
                                <div id="login-box" class="login-box visible widget-box no-border">
                                    <div class="widget-body">
                                        <div class="widget-main">
                                            <h4 class="header blue lighter bigger">
                                                <i class="icon-coffee green"></i>
                                                请输入您的用户信息
                                            </h4>

                                            <div class="space-6"></div>

                                                {% if password_is_wrong %}
                                                    <div class="alert alert-error">
                                                        <button type="button" class="close" data-dismiss="alert">×</button>
                                                        用户名或密码错误,重新输入!
                                                    </div>
                                                {% endif %}

                                            <form method="post" action="{% url ‘login:uavlogin‘ %}">
                                                {% csrf_token %}
                                                    <label class="block clearfix">
                                                        <span class="block center">
                                                            <i class="icon-user"></i>
                                                            {{ form.username }}
                                                            {{ form.username.errors }}
                                                        </span>
                                                    </label>
                                                    <label class="block clearfix">
                                                        <span class="block center">
                                                            <i class="icon-lock"></i>
                                                            {{ form.password }}
                                                            {{ form.password.errors }}
                                                        </span>
                                                    </label>

                                                    <div class="clearfix center">
                                                        <button type="submit" class="width-60 btn btn-sm btn-primary">
                                                            登  录
                                                        </button>
                                                    </div>
{#                                                <fieldset>#}
{#                                                    <label class="block clearfix">#}
{#                                                        <span class="block input-icon input-icon-right">#}
{#                                                            <input type="text" name="username" class="form-control" placeholder="Username" />#}
{#                                                            <i class="icon-user"></i>#}
{#                                                        </span>#}
{#                                                    </label>#}
{##}
{#                                                    <label class="block clearfix">#}
{#                                                        <span class="block input-icon input-icon-right">#}
{#                                                            <input type="password" name="password" class="form-control" placeholder="Password" />#}
{#                                                            <i class="icon-lock"></i>#}
{#                                                        </span>#}
{#                                                    </label>#}
{##}
{#                                                    <div class="space"></div>#}
{##}
{#                                                    <div class="clearfix">#}
{#                                                        <button type="submit" class="width-100 pull-left btn btn-sm btn-primary">#}
{#                                                            登  录#}
{#                                                        </button>#}
{#                                                    </div>#}
{##}
{#                                                    <div class="space-4"></div>#}
{#                                                </fieldset>#}
                                            </form>
                                        </div><!-- /widget-main -->

                                        <div class="toolbar clearfix">
                                            <div style="width: 100%;">
                                                <i class="icon-signal"></i>
                                                注册或忘记密码,请逐级上报恢复。
                                            </div>
                                        </div>
                                    </div><!-- /widget-body -->
                                </div><!-- /login-box -->
                            </div><!-- /position-relative -->
时间: 2024-07-30 22:20:55

Django 登录页面的实现的相关文章

django登录页面优化

环境准备 1.python3.6 2.django2.0+ 3.bootstrap3 后台代码 #创建login_check视图函数,用来处理登录 def login_action(request): if request.method == "POST": username = request.POST.get('username','') password = request.POST.get('password','') remember = request.POST.get('

bootstrap+flask写登录页面

flask是一个很小巧很方便的webframe,之前一直用django现在用尝试用flask感觉不错,准备用这个框架开发新的平台,首先就要有用户登录页面,用flask可以这样实现: run.py static templates 前端就用bootstrap展示,login.html <!DOCTYPE html> <html lang="en">   <head>     <meta charset="utf-8">

django -- 登录验证

django -- 登录验证 环境说明 Django:1.10 Python:3.6 以 AbstractUser 方式扩展内置 User # models.py 定义 model from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class UserProfile(AbstractUser): # 昵称 nick_name = m

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

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

Django 登录检查-自动重定向到登录页

编写一个Mixin类 from django.contrib.auth.decorators import login_required from django.utils.decorators import method_decorator class LoginRequiredMixin(object): """ 登录验证:如果未登录,自动重定向到登录页面 """ @method_decorator(login_required(login_

4.项目首页、显示登录页面

首页 轮播图 admin站点配置支持图片上传 下载pillow 模块 pip install Pillow 默认情况下,Django会将上传的图片保存在本地服务器上,需要配置保存的路径. 我们可以将上传的文件保存在静态文件static目录中,添加如下上传保存目录信息. 1.把app 目录设置为环境变量中的导包路径(settings.py 中) # 把apps目录设置环境变量中的导包路径 sys.path.append( os.path.join(BASE_DIR,"luf/apps")

在Exchange 2013 OWA登录页面中修改密码

透过OWA登录界面改密码对于使用Exchange的用户来说是一个很有有用的功能. 因为如果用户不在公司域环境中,当密码已经到期登录不了OWA,就没有办法通过OWA中的[选项]来改密码,当开启这项功能后,管理员和用户都可以很方便的处理密码到期的case. 早在Exchange2010的时候,我们需要通过修改CAS服务器的注册表项来实现这个功能.现在的Exchange2013已经内置了该功能,使用前只需要确认该功能属性的状态就可以了. 在最新的Exchange2013 SP1和CU5版本中,此功能在

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

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

CAS 4.0.x 自定义登录页面

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