django 사용자 로그 인 및 로그아웃 실현 방법
준비 작업
1.새 항목 과 app
[root@yl-web-test srv]# django-admin.py startproject lxysite
[root@yl-web-test srv]# cd lxysite/
[root@yl-web-test lxysite]# python manage.py startapp accounts
[root@yl-web-test lxysite]# ls
accounts lxysite manage.py
2.앱 설정프로젝트 settings.py 에 있 는
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'accounts',
)
3.url 설정프로젝트 urls.py 에 설정
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'lxysite.views.home', name='home'),
# url(r'^lxysite/', include('lxysite.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
# url(r'^admin/', include(admin.site.urls)),
url(r'^accounts/', include('accounts.urls')),
)
4.templates 설정템 플 릿 을 저장 하기 위해 새 templates 디 렉 터 리 를 만 듭 니 다.
[root@yl-web-test lxysite]# mkdir templates
[root@yl-web-test lxysite]# ls
accounts lxysite manage.py templates
그리고 settings 에서 설정 합 니 다.
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/srv/lxysite/templates',
)
5.데이터베이스 설정저 는 my sql 데이터 베 이 스 를 사용 합 니 다.먼저 데이터베이스 lxysite 를 만 듭 니 다.
mysql> create database lxysite;
Query OK, 1 row affected (0.00 sec)
그리고 settings.py 에 설정 합 니 다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'lxysite', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'password', # Not used with sqlite3.
'HOST': '10.1.101.35', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
그리고 데이터베이스 동기 화:동기 화 과정 에서 관리자 계 정 을 만 들 었 습 니 다.liuxiaoyan,password,그 다음 에 이 계 정 으로 로그 인하 고 로그 인 을 취소 합 니 다.
[root@yl-web-test lxysite]# python manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_user_permissions
Creating table auth_user_groups
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'root'): liuxiaoyan
E-mail address: [email protected]
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
이로써 준비 작업 이 끝났다.2.로그 인 기능 실현
django 자체 사용자 인증 을 사용 하여 사용자 로그 인 과 로그아웃 을 실현 합 니 다.
1.사용자 로그 인 폼 정의(forms.py)
boottstrap 프레임 워 크 를 사 용 했 기 때문에 명령 을 실행 합 니 다
#pip install django-bootstrap-toolkit
설치 합 니 다.settings.py 파일 에 설정 합 니 다.
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'bootstrap_toolkit',
'accounts',
)
forms.py 는 강제 규정 이 없 으 므 로 app 의 views.py 와 같은 디 렉 터 리 에 두 는 것 을 권장 합 니 다.
#coding=utf-8
from django import forms
from django.contrib.auth.models import User
from bootstrap_toolkit.widgets import BootstrapDateInput,BootstrapTextInput,BootstrapUneditableInput
class LoginForm(forms.Form):
username = forms.CharField(
required = True,
label=u" ",
error_messages={'required':' '},
widget=forms.TextInput(
attrs={
'placeholder':u" ",
}
)
)
password = forms.CharField(
required=True,
label=u" ",
error_messages={'required':u' '},
widget=forms.PasswordInput(
attrs={
'placeholder':u" ",
}
),
)
def clean(self):
if not self.is_valid():
raise forms.ValidationError(u" ")
else:
cleaned_data = super(LoginForm,self).clean()
정 의 된 로그 인 폼 은 두 개의 도 메 인 username 과 password 가 있 습 니 다.이 두 도 메 인 은 모두 필수 항목 입 니 다.2,정의 로그 인 보기 views.py
보기 에서 이전 단계 에 정 의 된 사용자 로그 인 폼 을 예화 합 니 다.
# Create your views here.
from django.shortcuts import render_to_response,render,get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.models import User
from django.contrib import auth
from django.contrib import messages
from django.template.context import RequestContext
from django.forms.formsets import formset_factory
from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from bootstrap_toolkit.widgets import BootstrapUneditableInput
from django.contrib.auth.decorators import login_required
from forms import LoginForm
def login(request):
if request.method == 'GET':
form = LoginForm()
return render_to_response('login.html',RequestContext(request,{'form':form,}))
else:
form = LoginForm(request.POST)
if form.is_valid():
username = request.POST.get('username','')
password = request.POST.get('password','')
user = auth.authenticate(username=username,password=password)
if user is not None and user.is_active:
auth.login(request,user)
return render_to_response('index.html',RequestContext(request))
else:
return render_to_response('login.html',RequestContext(request,{'form':form,'password_is_wrong':True}))
else:
return render_to_response('login.html',RequestContext(request,{'form':form,}))
이 보 기 는 앞에서 정의 한 LoginForm 을 실례 화 했 습 니 다.주요 업무 흐름 논 리 는:1.필수 항목 의 사용자 이름과 비밀번호 가 비어 있 는 지 판단 하고 비어 있 으 면'사용자 이름과 비밀 번 호 는 필수 항목'의 오류 정 보 를 알려 줍 니 다.
2.사용자 이름과 비밀번호 가 정확 한 지 판단 하고 오류 가 발생 하면'사용자 이름 이나 비밀번호 오류'의 오류 정 보 를 알려 줍 니 다.
3、로그 인 성공 후 홈 페이지(index.html)
3.로그 인 페이지 템 플 릿(login.html)
<!DOCTYPE html>
{% load bootstrap_toolkit %}
{% load url from future %}
<html lang="en">
<head>
<meta charset="utf-8">
<title> </title>
<meta name="description" content="">
<meta name="author" content=" ">
{% bootstrap_stylesheet_tag %}
{% bootstrap_stylesheet_tag "responsive" %}
<style type="text/css">
body {
padding-top: 60px;
}
</style>
<!--[if lt IE 9]>
<script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>-->
{% bootstrap_javascript_tag %}
{% block extra_head %}{% endblock %}
</head>
<body>
{% if password_is_wrong %}
<div class="alert alert-error">
<button type="button" class="close" data-dismiss="alert">×</button>
<h4> !</h4>
</div>
{% endif %}
<div class="well">
<h1> </h1>
<p>?</p>
<form class="form-horizontal" action="" method="post">
{% csrf_token %}
{{ form|as_bootstrap:"horizontal" }}
<p class="form-actions">
<input type="submit" value=" " class="btn btn-primary">
<a href="/contactme/"><input type="button" value=" " class="btn btn-danger"></a>
<a href="/contactme/"><input type="button" value=" ?" class="btn btn-success"></a>
</p>
</form>
</div>
</body>
</html>
accounts 의 urls.py 설정
from django.conf.urls import *
from accounts.views import login,logout
urlpatterns = patterns('',
url(r'login/$',login),
)
4.첫 페이지(index.html)코드 는 다음 과 같 습 니 다:
<!DOCTYPE html>
{% load bootstrap_toolkit %}
<html lang="en">
{% bootstrap_stylesheet_tag %}
{% bootstrap_stylesheet_tag "responsive" %}
<h1> </h1>
<a href="/accounts/logout/"><input type="button" value=" " class="btn btn-success"></a>
</html>
로그 인 URL 설정
from django.conf.urls import *
from accounts.views import login,logout
urlpatterns = patterns('',
url(r'login/$',login),
url(r'logout/$',logout),
)
로그 인 보 기 는 다음 과 같 습 니 다.djagno 자체 인증 시스템 의 logout 을 호출 한 다음 로그 인 인터페이스 로 돌아 갑 니 다.
@login_required
def logout(request):
auth.logout(request)
return HttpResponseRedirect("/accounts/login/")
위@loginrequired 표 시 는 로그 인 사용자 만 이 보 기 를 호출 할 수 있 습 니 다.그렇지 않 으 면 자동 으로 로그 인 페이지 로 재 설정 합 니 다.3.로그 인 로그아웃 데모
1,실행 python manage.py runserver 0.0.0.0:8000
브 라 우 저 에 ip+포트 를 입력 하여 로그 인 인터페이스 가 나타 납 니 다.
2.사용자 이름 이나 비밀번호 가 비어 있 을 때'사용자 이름과 비밀 번 호 는 필수 항목'을 알려 줍 니 다.
3.사용자 이름 이나 비밀번호 가 잘못 되 었 을 때'사용자 이름 이나 비밀번호 오류'를 알려 줍 니 다.
4.정확 한 사용자 이름과 비밀 번 호 를 입력 하고(데이터 베 이 스 를 만 들 때 생 성 된 liuxiaoyan,password)홈 페이지 에 들 어 갑 니 다.
5.로그아웃 을 클릭 하여 로그 인 을 취소 하고 로그 인 페이지 로 돌아 갑 니 다.
넷 째,잘못 배열 하 다
1、'bootstrap_toolkit' is not a valid tag library
당신 의 INSTALLED 때문에앱 에'bootstrap'이 설치 되 어 있 지 않 습 니 다.toolkit',설치 하면 됩 니 다.
자원 링크
https://www.jb51.net/article/143857.htm
https://www.jb51.net/article/143850.htm
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.