Django 중 loginrequired 장식 기의 깊이 있 는 소개
4723 단어 djangologin required장식 기
Django 는 다양한 장식 기 를 제공 합 니 다.그 중에서 loginrequired 는 자주 사용 할 수 있 습 니 다.이 장식 기 를 사용 하 는 네 가지 방법 을 소개 한다.
물론 사용 하기 전에 프로젝트 디 렉 터 리 의 settings.py 에 LOGIN 을 설정 하 는 것 을 기억 하 세 요.URL
사용 방법
1.URLconf 장식
from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic import TemplateView
from .views import VoteView
urlpatterns = [
url(r'^about/', login_required(TemplateView.as_view(template_name="secret.html"))),
url(r'^vote/', permission_required('polls.can_vote')(VoteView.as_view())),
]
2.함수 기반 보기 장식
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
@login_required
def my_view(request):
if request.method == 'GET':
# <view logic>
return HttpResponse('result')
3.장식 류 의 보기
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.views.generic import TemplateView
class ProtectedView(TemplateView):
template_name = 'secret.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(ProtectedView, self).dispatch(*args, **kwargs)
4.장식 은 Mixin 류 계승 을 통 해 이 루어 진다
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import View
from .forms import MyForm
class LoginRequiredMixin(object):
@classmethod
def as_view(cls, **initkwargs):
view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
return login_required(view)
class MyFormView(LoginRequiredMixin, View):
form_class = MyForm
initial = {'key': 'value'}
template_name = 'form_template.html'
def get(self, request, *args, **kwargs):
form = self.form_class(initial=self.initial)
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
# code here
Django 사용자 로그 인 접근 제한@loginrequired사이트 개발 과정 에서 이러한 수 요 를 자주 만 날 수 있다.사용자 가 시스템 에 로그 인해 야 일부 페이지 를 방문 할 수 있 고 사용자 가 로그 인하 지 않 고 직접 방문 하면 로그 인 인터페이스 로 넘 어 갈 수 있다.
이런 수 요 를 실현 하려 면 사실 매우 간단 하 다.
1.해당 view 방법 앞 에 django 자체 장식 기@login 추가required
2、settings.py 에 LOGIN 설정URL 매개 변수
3.login.html 폼 의 action 매개 변 수 를 수정 합 니 다.
# views.py
from djanco.contrib.auth.decorators import login_required
from django.shortcuts import render_to_response
@login_required
def index(request):
return render_to_response('index.html')
# settings.py
....
LOGIN_URL = '/accounts/login/' #
....
django 기본 로그 인 주 소 를 사용 하려 면 urls.py 에 이 설정 을 추가 할 수 있 습 니 다.
# urls.py
....
url(r'^accounts/login/', views.login),
....
# login.html
<div class="container">
<form class="form-signin" action="/accounts/login/" method="post">
{% csrf_token %}
<!--csrf_token: -->
<h2 class="form-signin-heading" align="center"> </h2>
<label for="inputUsername" class="sr-only">username</label>
<input type="text" name="username" id="inputUsername" class="form-control" placeholder="username" required autofocus>
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required>
<div class="checkbox">
<label>
<input type="checkbox" value="remember-me">
</label>
</div>
<br />
<button class="btn btn-lg btn-primary btn-block" type="submit"> </button>
<br />
<span style="color: red;">{{ login_err }}</span>
</form>
</div>
<!-- /container -->
총결산이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.