版本: python2.7
django 1.8.16
project名称:site_test, app: study
目录结构:
-> site_test :tree
.
├── db.sqlite3
├── manage.py
├── site_test
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── views.py
│ ├── views.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── static
└── templates
├── index.html
├── login.html
├── registration
│ └── login.html
└── study
1、site_test/settings文件中
INSTALL_APPS中要包含django.contrib.auth和django.contrib.contenttypes。默认就有
django.contrib.contenttypes 是 auth 模块的用户权限处理部分依赖的应用
MIDDLEWARE_CLASSES中要包含:
SessionMiddleware :用户处理用户会话。
AuthenticationMiddleware: 绑定一个 User 对象到请求中。
默认就有这两个中间件
INSTALLED_APPS = (
##其他应用,
'django.contrib.auth',
'django.contrib.contenttypes',
)
MIDDLEWARE_CLASSES = (
'其他中间件列表',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
)
2、site_test/urls.py 文件
login, loginout是django自带的方法,需要从django.contrib.auth.views中导入才能使用
from django.conf.urls import include, url
from django.contrib import admin
import views
import django.contrib.auth.views as auth_views ##不要忘记导入这个
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^login/', auth_views.login),
url(r'^logout/', auth_views.logout_then_login),
url(r'^$', views.index),
]
自带的url有以下这些:
^login/$ [name='login']
^logout/$ [name='logout']
^password_change/$ [name='password_change']
^password_change/done/$ [name='password_change_done']
^password_reset/$ [name='password_reset']
^password_reset/done/$ [name='password_reset_done']
^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$ [name='password_reset_confirm']
^reset/done/$ [name='password_reset_complete']
3、site_test/views.py :
该文件定义了访问index页面的视图方法,该文件需要自己创建。加上login_required() 意思是在访问该页面之前需要登录
#coding:utf-8
from django.shortcuts import redirect,render
from django.contrib.auth.decorators import login_required
@login_required()
def index(request):
return render(request, 'index.html')
login.html:
该文件位于templates/registration/login.html
注意:login.html不一定要位于registration目录下
如果您不想调用模板registration/login.html,您可以通过额外的参数将template_name参数传递给as_view你的URLconf中的方法。
例如,下面URLconf中的行将使用myapp/login.html:
url(r'^accounts/login/$', auth_views.LoginView.as_view(template_name='myapp/login.html')),
login.html文件内容
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action='.' method='post'>
{% csrf_token %}
<label for="username">用户名:</label>
<input type="text" name="username" value="" id="username">
<label for="password">密码:</label>
<input type="password" name="password" value="" id="password">
<!--<input type="submit" value="login">-->
<input type="submit" value="login">
<input type="hidden" name="next" value="{{ next|escape }}">
</form>
</body>
</html>
4、settings.py中加 LOGIN_URL(未通过认证时跳转的认证页面) 和 LOGIN_REDIRECT_URL (登录成功后默认跳转的页面)
LOGIN_URL='/login' ##登录页面的url
LOGIN_REDIRECT_URL='/' ##登陆后跳转的页面,即索引页面
5、index.html文件
html文件中要可以直接通过{{ user }}获取用户名
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
{{ user }}
<a href="/logout/">退出</a>
<h2>欢迎访问index页面</h2>
</body>
</html>
登录测试
注销后返回到登录页面
参考文档:http://python.usyiyi.cn/translate/django_182/topics/auth/default.html
http://blog.nsfocus.net/django-easy-steps-user-authentication/
https://www.zmrenwu.com/post/30/
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。