이것은 이전 질문의 확장입니다. is_superuser
및 is_staff
으로 인증을 받았습니다. 이제 스탭이 로그인하여 수퍼 유저 만 볼 수있는 것을보고 싶다면 다른 페이지로 리디렉션해야합니다. 직원을 다른 페이지로 리디렉션하도록 @user_passes_test(lambda u: u.is_superuser)
을 수정합니까? 그렇다면, 어떻게해야합니까? 워드 프로세서에서@user_passes_test (lambda : u.is_superuser)를 수퍼 유저가 아닌 다른 페이지로 리디렉션
from django import forms
from django.conf import settings
from django.http import HttpResponse, HttpResponseRedirect, Http404
from ManagerApp import models as pmod
from . import templater
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import user_passes_test
@login_required(login_url='/ManagerApp/login/')
@user_passes_test(lambda u: u.is_superuser)
def process_request__new(request):
q = pmod.User()
q.first_name = 'New User!'
q.save()
return HttpResponseRedirect('/ManagerApp/edit_user/' + str(q.id))
@user_passes_test(lambda u: u.is_superuser)
def process_request(request):
'''Shows all users in the DB'''
q = pmod.User.objects.get(id=request.urlparams[0])
form = UserForm(initial={
#'active': q.is_active,
'superuser': q.is_superuser,
'staff': q.is_staff,
'firstname': q.first_name,
'lastname': q.last_name,
'username': q.username,
'password': q.password,
'email': q.email,
'street': q.street,
'city': q.city,
'state': q.state,
'zipCode': q.zipcode,
'phone': q.phone,
})
if request.method == 'POST':
form = UserForm(request.POST)
if form.is_valid():
#q.is_active = form.cleaned_data['active']
q.is_superuser = form.cleaned_data['superuser']
q.is_staff = form.cleaned_data['staff']
q.first_name = form.cleaned_data['firstname']
q.last_name = form.cleaned_data['lastname']
q.username = form.cleaned_data['username']
q.set_password(form.cleaned_data['password'])
q.email = form.cleaned_data['email']
q.street = form.cleaned_data['street']
q.city = form.cleaned_data['city']
q.state = form.cleaned_data['state']
q.zipcode = form.cleaned_data['zipcode']
q.phone = form.cleaned_data['phone']
q.save()
return HttpResponseRedirect('/ManagerApp/users/')
# return the template html
template_vars = {
'form': form,
}
return templater.render_to_response(request, 'edit_user.html', template_vars)
class UserForm(forms.Form):
'''The question form'''
#active = forms.NullBooleanField(required=False)
superuser = forms.NullBooleanField(required=False)
staff = forms.NullBooleanField(required=False)
firstname = forms.CharField(required=False)
lastname = forms.CharField(required=False)
username = forms.CharField(required=False)
password = forms.CharField(required=False)
email = forms.CharField(required=False)
street = forms.CharField(required=False)
city = forms.CharField(required=False)
state = forms.CharField(required=False)
zipcode = forms.CharField(required=False)
phone = forms.CharField(required=
거짓) 직접