栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

django自带的登录注册(django实现注册和登录)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

django自带的登录注册(django实现注册和登录)

准备工作:创建bookmarks项目,并在其下面创建account app。

具体步骤

一、在installed app里注册account,注意要把它注册在最前面,如下:

INSTALLED_APPS = [
    'account',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

]

二、在account 的urls.py文件添加Django自带的Django.contrib.auth.views模块,该模块有LoginView,LogoutView,PasswordChangeView,PasswordChangeDoneView,PasswordResetView,PasswordResetDoneView,PasswordReset/confirm/iView和PasswordRestCompleteView,可以完成用户登录、注销、修改密码、重置密码的功能。以登录和注销为例说明如何利用这些功能。

因为他们本质上是views,所以我们直接可以在urls.py引用他们:导入这些view,并在路由路径中配置对应的views.代码如下:

from django.urls import path
from django.contrib.auth import views as auth_views


urlpatterns = [
    path('login/',auth_views.LoginView.as_view(),name='login'),
    path('logout/',auth_views.LogoutView.as_view(),name='logout'),
   
]

三、我们再创建相应的login和logout templates。这里有一点需要注意,因为我们使用的是自带的view,所以templates的路径也需要按指定的要求,template的名字也是固定的。Django.contrib.auth.views会在app的templates/registration文件下读取相应的template(login读取login.html,logout读取logged_out.html,一定要注意文件名!否则会读不到)。先在templates创建base.html,设定基本模板,然后在registration下创建login.html和logged_out.html文件,并引用base.html。代码如下:

#base.html



    
        {% block title %}
            {% endblock %}
        
    
    
         
                    
                
                {% if request.user.is_authenticated %} 
                Hello {{request.user.username}}
                
                Logout
                {% endif %}
            
        
        
            {% block content %}
            {% endblock %}
        
    



#registration/login.html(django.contrib.auth.view指定名称,不能修改,否则出错)

{% extends 'base.html' %} 
{% block tiltle %} 

Log in

{% endblock %} {% block content %} Log-In {% if form.error %}

Your username and password didn't match. Please try again

{% else %}

Please, use the following form to log-in:

{% endif %}
{{ form.as_p}} {% csrf_token %}

{% endblock %} #registration/logged_out.html(django.contrib.auth.view指定名称,不能修改,否则出错) {% extends "base.html" %} {% block title %} Logged out {% endblock %} {% block content %} Logged out

You have been sucessfully logged out. You can log-in again

{% endblock %}

四、我们需要编写登录成功的页面,这个文件的名称可以自定义,如dashboard.html。我们把他放在templates根目录下,创建一个新的文件夹也可以。代码如下,比较简单,可以进一步扩展。

{% extends "base.html" %} 
{% block title %} 
    Dashboard
{% endblock %} 
{% block content %} 
    Dashboard 
    

Welcome to your dashboard.

{% endblock %}

最后,我们要设置重定向,再登录成功后将页面转到dsashboard。先在urls.py中增加dashboard对应的路径,然后在settings.py中设置LOGIN_REDIRECT_URL='dashboard'。

        urls.py设置

from django.urls import path
from django.contrib.auth import views as auth_views
from . import views


urlpatterns = [
    path('login/',auth_views.LoginView.as_view(),name='login'),
    path('logout/',auth_views.LogoutView.as_view(),name='logout'),
    path('',views.dashboard,name='dashboard'),
   
]

        setting.py设置

# LOGIN_URL 和LOGOUT_URL可以不设
#LOGIN_URL = 'login'
#LOGOUT_URL ='logout'

LOGIN_REDIRECT_URL = 'dashboard'

至此,用户登录与注销界面设定完毕。

测试运行效果:

        -在usermgt目录下运行python manage.py migrate,创建相应的数据库。

        - 通过python manage.py createsuperuser usr,创建用户

        - 运行python manage.py runserver启动服务器,在浏览器中输入:localhost:8000/account/login

输入我们刚刚创建的用户名密码,提示登录成功。

 退出登录

        说明已经成功配置用户登录和密码。

 

 总结:在利用用authenticate_framework设置用户登录和注销功能时,应注意几个点

        1. Installd App:要把创建的app放在最前面至少在Django.contrib.auth前面,避免Django在处理logout时,读取admin模块的logout

        2.login和logout模板需要放在指定位置,使用指定名字(templates/registration/login.html,templates/registration/logged_out.html)

        3.需要在settings.py中设置登录成功后重订向试图LOGIN_REDIRECT_URL ='dashboard'

        

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772901.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号