Django로 로그인 처리
(인증된 문서존재하다는 초보자를 위한 느낌이 아니다)
Django 버전 1.10
accounts 응용 프로그램 제작
이번에는 웹 사이트에서 로그인/로그아웃 전용 응용 프로그램 acocunts를 만듭니다.
계정으로 명명된 이유는 sessings.LOGIN_URL
의 기본값이 /accounts/login
이기 때문이다.$ python manage.py startapp accounts
polls 때와 같이 프로그램 등록을 진행합니다
mysite/settings.pyINSTALLED_APPS = [
'polls.apps.PollsConfig',
'accounts.apps.Accountsconfig', # 追加
#...
]
URL 설정
mysite/urls.편집
mysite/urls.pyurlpatterns = [
#...
url(r'accounts/', include('accounts.urls')), # 追加
]
accounts/urls.새 py
기본login/logout 보기 사용하기
accounts/urls.pyfrom django.conf.urls import url
from django.contrib.auth.views import login,logout
urlpatterns = [
url(r'^login/$', login,
{'template_name': 'accounts/login.html'},
name='login'),
url(r'^logout/$', logout, name='logout')
]
Django1.10에서url(r'^login/$', 'django.contrib.auth.views.login')
이러한 문자열은 지정할 수 없습니다. 주의하십시오.
템플릿 만들기
accounts/templates/accounts/login.html{% extends "admin/base.html" %} {# ① #}
{% block content %}
{% if form.errors %}
<div class="alert alert-danger" role="alert">
<p>Your usernamne and password didn't match. Please try again.</p>
</div>
{% endif %}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title text-center">Log-in to mysite</h3>
</div>
<div class="panel-body">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span>
<input id="id_username" name="username" type="text" value="" maxlength="256" placeholder="Username" aria-describedby="sizing-addon1" autofocus required/> {# ② #}
</div>
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-lock fa-fw"></i></span>
<input id="id_password" name="password" type="password" value="" maxlength="256" placeholder="Pasword" aria-describedby="sizing-addon1" required/> {# ② #}
</div>
<button type="submit" style="margin-bottom:-20px"><i class="fa fa-sign-in">Login</i></button>
<input name="next" type="hidden" value="{{ next }}"/> {# ③ #}
</form>
</div>
</div>
{% endblock %}
① 즐거움을 위한 admin의 base.차용 html
②django.contrib.auth.view.login
기본 사용AuthenticationForm
.AuthenticationForm
'username','password'라는 폼 값을 이용하여
③ 로그인 화면으로 리디렉션할 때 리디렉션 소스는 /accounts/login/?next=/polls/3
와 같이 전달됩니다.이 넥스트 값을 알려야 합니다AuthenticationForm
로그아웃한 페이지는 관리자를 직접 사용하기 때문에 이번에는 만들지 않습니다.
해보다
polls/views.py# ...
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
@method_decorator(login_required, name='dispatch')
class IndexView(generic.ListView):
# ...
클래스 기반 보기에 사용@method_decorator
.함수의 경우 @login_required
이면 됩니다.
액세스http://localhost:8000/polls 시 다음 화면이 나타납니다.
슈퍼유저 계정으로 로그인할 수 있을 거예요.
이전에 admin에 로그인할 때 로그인 화면이 되지 않을 때가 있기 때문에 방문http://localhost:8000/accounts/logout을 한 번 취소하고 로그아웃해야 합니다.
Reference
이 문제에 관하여(Django로 로그인 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maueki/items/d28fd2a170d42e745376
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ python manage.py startapp accounts
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'accounts.apps.Accountsconfig', # 追加
#...
]
mysite/urls.편집
mysite/urls.py
urlpatterns = [
#...
url(r'accounts/', include('accounts.urls')), # 追加
]
accounts/urls.새 py기본login/logout 보기 사용하기
accounts/urls.py
from django.conf.urls import url
from django.contrib.auth.views import login,logout
urlpatterns = [
url(r'^login/$', login,
{'template_name': 'accounts/login.html'},
name='login'),
url(r'^logout/$', logout, name='logout')
]
Django1.10에서url(r'^login/$', 'django.contrib.auth.views.login')
이러한 문자열은 지정할 수 없습니다. 주의하십시오.템플릿 만들기
accounts/templates/accounts/login.html{% extends "admin/base.html" %} {# ① #}
{% block content %}
{% if form.errors %}
<div class="alert alert-danger" role="alert">
<p>Your usernamne and password didn't match. Please try again.</p>
</div>
{% endif %}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title text-center">Log-in to mysite</h3>
</div>
<div class="panel-body">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span>
<input id="id_username" name="username" type="text" value="" maxlength="256" placeholder="Username" aria-describedby="sizing-addon1" autofocus required/> {# ② #}
</div>
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-lock fa-fw"></i></span>
<input id="id_password" name="password" type="password" value="" maxlength="256" placeholder="Pasword" aria-describedby="sizing-addon1" required/> {# ② #}
</div>
<button type="submit" style="margin-bottom:-20px"><i class="fa fa-sign-in">Login</i></button>
<input name="next" type="hidden" value="{{ next }}"/> {# ③ #}
</form>
</div>
</div>
{% endblock %}
① 즐거움을 위한 admin의 base.차용 html
②django.contrib.auth.view.login
기본 사용AuthenticationForm
.AuthenticationForm
'username','password'라는 폼 값을 이용하여
③ 로그인 화면으로 리디렉션할 때 리디렉션 소스는 /accounts/login/?next=/polls/3
와 같이 전달됩니다.이 넥스트 값을 알려야 합니다AuthenticationForm
로그아웃한 페이지는 관리자를 직접 사용하기 때문에 이번에는 만들지 않습니다.
해보다
polls/views.py# ...
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
@method_decorator(login_required, name='dispatch')
class IndexView(generic.ListView):
# ...
클래스 기반 보기에 사용@method_decorator
.함수의 경우 @login_required
이면 됩니다.
액세스http://localhost:8000/polls 시 다음 화면이 나타납니다.
슈퍼유저 계정으로 로그인할 수 있을 거예요.
이전에 admin에 로그인할 때 로그인 화면이 되지 않을 때가 있기 때문에 방문http://localhost:8000/accounts/logout을 한 번 취소하고 로그아웃해야 합니다.
Reference
이 문제에 관하여(Django로 로그인 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/maueki/items/d28fd2a170d42e745376
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{% extends "admin/base.html" %} {# ① #}
{% block content %}
{% if form.errors %}
<div class="alert alert-danger" role="alert">
<p>Your usernamne and password didn't match. Please try again.</p>
</div>
{% endif %}
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title text-center">Log-in to mysite</h3>
</div>
<div class="panel-body">
<form action="{% url 'login' %}" method="post" role="form">
{% csrf_token %}
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span>
<input id="id_username" name="username" type="text" value="" maxlength="256" placeholder="Username" aria-describedby="sizing-addon1" autofocus required/> {# ② #}
</div>
<div class="input-group" style="margin-bottom:10px">
<span class="input-group-addon"><i class="fa fa-lock fa-fw"></i></span>
<input id="id_password" name="password" type="password" value="" maxlength="256" placeholder="Pasword" aria-describedby="sizing-addon1" required/> {# ② #}
</div>
<button type="submit" style="margin-bottom:-20px"><i class="fa fa-sign-in">Login</i></button>
<input name="next" type="hidden" value="{{ next }}"/> {# ③ #}
</form>
</div>
</div>
{% endblock %}
polls/views.py
# ...
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
@method_decorator(login_required, name='dispatch')
class IndexView(generic.ListView):
# ...
클래스 기반 보기에 사용@method_decorator
.함수의 경우 @login_required
이면 됩니다.액세스http://localhost:8000/polls 시 다음 화면이 나타납니다.
슈퍼유저 계정으로 로그인할 수 있을 거예요.
이전에 admin에 로그인할 때 로그인 화면이 되지 않을 때가 있기 때문에 방문http://localhost:8000/accounts/logout을 한 번 취소하고 로그아웃해야 합니다.
Reference
이 문제에 관하여(Django로 로그인 처리), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maueki/items/d28fd2a170d42e745376텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)