0
私はログインするユーザーを必要とせずにDjangoの登録ページをパスワードで保護しようとしていますが、私はそれを把握していないようです。私の流れは次のようになります。Djangoでログインしなくてもビューを保護できますか?
- ユーザーが成功すると、ユーザーは
UserCreationForm
で提示されている場合は失敗し、ユーザーはパスワード - を再入力する場合mydomain.com/register/
- ユーザーが
registration_access
フォーム - にパスワードを入力しアクセスします
UserCreationForm
が正しく記入されていない場合UserCreationForm
が満たされている場合は、ユーザーが再びUserCreationForm
+エラー- が提示されユーザーがプロファイルページにリダイレクトされました
私が今直面している問題は、ユーザーがURLなしのビュー(UserCreationFormを含むビュー)にリダイレクトできないことです。
views.py
def register(request):
if request.method == 'POST':
# Gather information from all forms submitted
user_custom_info = user_information(request.POST)
user_info = UserCreationForm(request.POST)
profile_info = deejay_form(request.POST)
# Check to make sure they entered data into each of the forms
info_validated = user_info.is_valid() and user_custom_info.is_valid() and profile_info.is_valid()
# If they did...
if info_validated:
# Clean the data...
user_custom_info = user_custom_info.cleaned_data
user_info = user_info.cleaned_data
profile_info = profile_info.cleaned_data
# Create a new user with those traits
new_user = User.objects.create_user(user_info['username'], user_custom_info['email'], user_info['password1'])
new_user.first_name = user_custom_info['first_name']
new_user.last_name = user_custom_info['last_name']
new_user.save()
# Create a new deejay with those traits..
new_deejay = Deejay(user=new_user, dj=profile_info['dj'], role=profile_info['role'], bio=profile_info['bio'], phone=profile_info['phone'])
new_deejay.save()
# Log in the user..
if not request.user.is_authenticated():
this_user = authenticate(username=user_info['username'], password=user_info['password1'])
login(request, this_user)
# Need to add to group - http://stackoverflow.com/questions/6288661/adding-a-user-to-a-group-in-django
# Redirect to dj page
return redirect('dj_detail', dj_name=Deejay.objects.get(user=request.user).dj)
else:
return render(request, 'pages/backend/register.html', {'forms':[user_custom_info, user_info, profile_info]})
return render(request, 'pages/backend/register.html', {'forms':[user_information, UserCreationForm, deejay_form]})
# View for a password protected registration form
def register_protect(request):
if request.method == 'POST':
pw_info = registration_access(request.POST)
if pw_info.is_valid():
return redirect(register)
else:
return render(request, 'pages/backend/register.html', {'forms':[pw_info]})
return render(request, 'pages/backend/register.html', {'forms':[registration_access]})
forms.py
class user_information(forms.ModelForm):
first_name = forms.CharField(label='First Name', required=True)
last_name = forms.CharField(label='Last Name', required=True)
email = forms.EmailField(label='Email', required=True)
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')
class deejay_form(forms.ModelForm):
class Meta:
model = Deejay
fields = ('dj', 'role', 'bio', 'phone')
class registration_access(forms.Form):
secret_password = forms.CharField(label="Secret Password", widget=forms.PasswordInput())
def clean(self):
access_password = "mypassword"
given_password = self.cleaned_data.get('secret_password')
if given_password != access_password:
raise forms.ValidationError("Did you forget your training?")
return self.cleaned_data
「URLなしでユーザーをビューにリダイレクトできない」とはどういう意味ですか、それは明白ではありませんか? –