我在 context_proccessors.py 中有两种注册和授权方法。这些方法可在网站的任何页面上使用,以便用户可以在任何页面上登录或注册
def login_view(request): # вьюшка авторизации
if request.method == 'GET':
form_log = LoginForm(request.POST or None)
data = {
'form_log' : form_log,
}
return data
if request.method == 'POST':
if request.POST.get('submit_type') == 'Войти':
form_log = LoginForm(request.POST or None)
if form_log.is_valid():
username = form_log.cleaned_data['username']
password = form_log.cleaned_data['password']
user = authenticate(username=username, password=password)
if user:
profile = login(request, user)
return {}
data = {
'form_log' : form_log,
}
return data
return {}
def registration_view(request): # вьюшка регистрации
if request.method == 'GET':
form_reg = RegistrationForm(request.POST or None)
context = {
'form_reg' : form_reg,
}
return context
if request.method == 'POST':
if request.POST.get('submit_type') == 'Зарегистрироваться':
form_reg = RegistrationForm(request.POST or None)
if form_reg.is_valid():
new_user = form_reg.save(commit=False)
new_user.username = form_reg.cleaned_data['username']
new_user.email = form_reg.cleaned_data['email']
new_user.save()
new_user.set_password(form_reg.cleaned_data['password'])
new_user.save()
Profile.objects.create(
user=new_user,
)
user = authenticate(username=form_reg.cleaned_data['username'],
password=form_reg.cleaned_data['password'])
login(request, user)
return {}
context = {
'form_reg' : form_reg,
}
return context
return {}
授权或注册后,页面更新。如果再次刷新页面,会重复POST请求,会报错:
如何保证授权或注册成功后,通过更新POST页面,请求不重复???