def register(request): if request.method == 'POST': form = ShopUserRegisterForm(request.POST, request.FILES) if form.is_valid(): user = form.save() # приводит к сохранению в базу данных if send_verify_mail(user): print('Сообщение успешно отправлено!') return HttpResponseRedirect(reverse('authapp:login')) else: print('Ошибка: сообщение не отправлено.') return HttpResponseRedirect(reverse('authapp:login')) else: form = ShopUserRegisterForm() content = {'title': 'Регистрация', 'form': form} return render(request, 'authapp/register.html', content) content = { 'title': 'Регистрация пользователя', 'form': form, 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } return render(request, 'authapp/register.html', content)
def login(request): # если не делать условие, то когда не будет next - будет ошибка next = request.GET['next'] if 'next' in request.GET.keys() else None if request.method == 'POST': # форма заполнится данными form = ShopUserLoginForm( data=request.POST ) # data используется для работы с AuthenticationForm if form.is_valid( ): # проверили валидность введенных данных и вывод сообщений об ошибках username = request.POST['username'] # получаем логин и пароль password = request.POST['password'] user = auth.authenticate(username=username, password=password) if user and user.is_active: # активирован ли аккаунт next = request.POST['next'] if 'next' in request.POST.keys( ) else None auth.login(request, user) return HttpResponseRedirect( '/' if not next else next) # первый вариант редиректа else: form = ShopUserLoginForm() context = { 'title': 'Авторизация на сайте', 'form': form, 'next': next, 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } return render(request, 'authapp/login.html', context)
def index(request): content = { 'title': 'Корзина', 'header1_page': 'Корзина товаров', 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } return render(request, 'basketapp/index.html', content)
def update(request): if request.method == 'POST': # в instance передаем существующий объект пользователя для редактирования form = ShopUserUpdateForm(request.POST, request.FILES, instance=request.user) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('auth:update')) else: form = ShopUserUpdateForm(instance=request.user) content = { 'title': 'Редактирование данных', 'form': form, 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } return render(request, 'authapp/update.html', content)
def basket_update(request, pk, quantity): if request.is_ajax(): basket_obj = get_object_or_404(Basket, pk=pk) quantity = int(quantity) if quantity > 0: basket_obj.quantity = quantity basket_obj.save() else: basket_obj.delete() content = { 'title': 'Корзина', 'header1': 'Корзина', 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } result = render_to_string('basketapp/includes/inc__basket_list.html', content) return JsonResponse({ 'result': result, })
def verify(request, email, activation_key): content = { 'title': 'Активация пользователя', 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } try: user = ShopUser.objects.get(email=email) if user.activation_key == activation_key and not user.is_activation_key_expired( ): user.is_active = True user.save() auth.login(request, user, backend='django.contrib.auth.backends.ModelBackend') return render(request, 'authapp/verification.html', content) else: print(f'При активации пользователя {user} произошла ошибка.') return render(request, 'authapp/verification.html', content) except Exception as e: print(f'Ошибка при активации пользователя: {e.args}') return render(request, 'authapp/verification.html', content)
def update(request): if request.method == 'POST': form = ShopUserUpdateForm(request.POST, request.FILES, instance=request.user) # она заполняется данными из связанной модели profile_form = ShopUserProfileEditForm( request.POST, instance=request.user.shopuserprofile) if form.is_valid() and profile_form.is_valid(): form.save() return HttpResponseRedirect(reverse('auth:update')) else: form = ShopUserUpdateForm(instance=request.user) profile_form = ShopUserProfileEditForm( instance=request.user.shopuserprofile) content = { 'title': 'Редактирование данных', 'form': form, 'profile_form': profile_form, 'main_menu': main_menu(), 'info_pages': footer_menu(), 'basket': get_basket(request), } return render(request, 'authapp/update.html', content)