사용자가 등록 할 수있는 장고 기반 사이트가 있지만 사이트의 특정 부분을보기 전에 관리자가 계정을 승인해야합니다. 나는 그것을 django.contrib.auth
에서 벗어나고있다. 사용자가 특정 도메인 이름의 이메일 주소로 등록해야하므로 UserCreationForm
의 save()
및 clean_email()
방법을 재정의했습니다.장고에서 어떻게이 "등록"보기를 향상시킬 수 있습니까?
내 등록 페이지는 다음보기를 사용합니다. 이 뷰 코드 개선이나 프로세스 개선 (또는 다른 것, 실제로는)을 향상시킬 수있는 방법에 대해 알고 싶습니다.
def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
message = None
form.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password1']
user = authenticate(username=username, password=password)
first_name = form.cleaned_data['first_name']
last_name = form.cleaned_data['last_name']
email = user.email
# If valid new user account
if (user is not None) and (user.is_active):
login(request, user)
message = "<strong>Congratulations!</strong> You have been registered."
# Send emails
try:
# Admin email
pk = None
try: pk = User.objects.filter(username=username)[0].pk
except: pass
admin_email_template = loader.get_template('accounts/email_notify_admin_of_registration.txt')
admin_email_context = Context({
'first_name': first_name,
'last_name': last_name,
'username': username,
'email': email,
'pk': pk,
})
admin_email_body = admin_email_template.render(admin_email_context)
mail_admins("New User Registration", admin_email_body)
# User email
user_email_template = loader.get_template('accounts/email_registration_success.txt')
user_email_context = Context({
'first_name': form.cleaned_data['first_name'],
'username': username,
'password': password,
})
user_email_body = user_email_template.render(user_email_context)
user.email_user("Successfully Registered at example.com", user_email_body)
except:
message = "There was an error sending you the confirmation email. You should still be able to login normally."
else:
message = "There was an error automatically logging you in. Try <a href=\"/login/\">logging in</a> manually."
# Display success page
return render_to_response('accounts/register_success.html', {
'username': username,
'message': message,
},
context_instance=RequestContext(request)
)
else: # If not POST
form = UserCreationForm()
return render_to_response('accounts/register.html', {
'form': form,
},
context_instance=RequestContext(request)
)
내 사이트는 많은 트래픽을 보지 못했습니다. 이는 소규모 클럽을위한 것이지만 나머지 제안에 감사드립니다! 그들은 매우 도움이되었다. – Tyson
위와 같이 대답 해 주셔서 감사합니다. 그러나 귀하의 질문은 쉬운 것이 아닙니다 ... 지금 당장 투표를하고 다른 사람들이 대응할 수있는 시간을 더 주길 원할 것입니다. 다른 사람이 더 좋은 대답을 할 수도 있습니다! :) –