반응형
Django에서 사용자를 만드는 방법은 무엇입니까?
다음 코드로 Django 프로젝트에서 새 사용자를 만들려고하는데 강조 표시된 줄에서 예외가 발생합니다.
def createUser(request):
userName = request.REQUEST.get('username', None)
userPass = request.REQUEST.get('password', None)
userMail = request.REQUEST.get('email', None)
# TODO: check if already existed
**user = User.objects.create_user(userName, userMail, userPass)**
user.save()
return render_to_response('home.html', context_instance=RequestContext(request))
도움이 필요하세요?
Django에서 사용자를 생성하는 올바른 방법은 create_user 함수를 사용하는 것입니다. 이것은 암호의 해싱 등을 처리합니다.
from django.contrib.auth.models import User
user = User.objects.create_user(username='john',
email='jlennon@beatles.com',
password='glass onion')
실제 값이 아니라 실제 값을 전달하고 있음을 확인 했습니까 None
?
from django.shortcuts import render
def createUser(request):
userName = request.REQUEST.get('username', None)
userPass = request.REQUEST.get('password', None)
userMail = request.REQUEST.get('email', None)
# TODO: check if already existed
if userName and userPass and userMail:
u,created = User.objects.get_or_create(userName, userMail)
if created:
# user was created
# set the password here
else:
# user was retrieved
else:
# request was empty
return render(request,'home.html')
대량 사용자 생성 set_password
여러 테스트 사용자를 만들고 있는데 bulk_create
훨씬 빠르지 만 create_user
함께 사용할 수 없습니다 .
set_password
해시 된 암호를 생성하는 또 다른 방법입니다.
def users_iterator():
for i in range(nusers):
is_superuser = (i == 0)
user = User(
first_name='First' + str(i),
is_staff=is_superuser,
is_superuser=is_superuser,
last_name='Last' + str(i),
username='user' + str(i),
)
user.set_password('asdfqwer')
yield user
class Command(BaseCommand):
def handle(self, **options):
User.objects.bulk_create(iter(users_iterator()))
비밀번호 해싱에 관한 질문 : Django에서 Bcrypt를 사용하여 비밀번호를 암호화하는 방법
Django 1.9에서 테스트되었습니다.
정상적으로 사용자를 생성하면 비밀번호 생성 방법이 다를 수 있으므로 로그인이 불가합니다. 기본 가입 양식을 사용할 수 있습니다.
from django.contrib.auth.forms import UserCreationForm
You can extend that also
from django.contrib.auth.forms import UserCreationForm
class UserForm(forms.ModelForm):
mobile = forms.CharField(max_length=15, min_length=10)
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ['username', 'password', 'first_name', 'last_name', 'email', 'mobile' ]
Then in view use this class
class UserCreate(CreateView):
form_class = SignUpForm
template_name = 'registration/signup.html'
success_url = reverse_lazy('list')
def form_valid(self, form):
user = form.save()
참고URL : https://stackoverflow.com/questions/10372877/how-to-create-a-user-in-django
반응형
'Development Tip' 카테고리의 다른 글
.NET의 SOAP 클라이언트-참조 또는 예제? (0) | 2020.11.06 |
---|---|
Cygwin Make bash 명령을 찾을 수 없습니다. (0) | 2020.11.06 |
Google 경고 : 리소스가 글꼴로 해석되지만 MIME 유형 application / octet-stream으로 전송 됨 (0) | 2020.11.06 |
Apache가 XAMPP 제어판에서 실행되고 있지 않습니다 (오류 : Apache가 예기치 않게 종료되었습니다. 포트가 차단 되었기 때문일 수 있음) (0) | 2020.11.06 |
Rails 바로 가기에서 nil이 아니고 비어 있지 않은지 확인하십시오. (0) | 2020.11.06 |