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): context = { 'page_title': 'корзина', 'basket': get_basket(request), } return render(request, 'basketapp/index.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 main(request): main_links = get_json('main_links') title = 'главная' basket = get_basket(request.user) context = { 'title': title, 'main_links': main_links, 'products': Product.objects.all()[:3], 'basket': basket, } return render(request, 'index.html', context)
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() result = render_to_string('basketapp/includes/inc__basket_list.html', context={'basket': get_basket(request)}) return JsonResponse({'result': result})
def basket(request): title = "корзина" basket_items = Basket.objects.filter(user=request.user) basket = get_basket(request.user) hot_product = get_hot_product() same_products = get_same_products(hot_product) content = { "title": title, "basket_items": basket_items, "media_url": settings.MEDIA_URL, "project_settings": settings, "basket": basket, "same_products": same_products, 'hot_product': hot_product } return render(request, "mainapp/cart.html", content)
def basket_remove_all(request): ''' принимает пост ajax пост запрос от basket и удаляет объек товара в корзине полностью ''' if request.method == 'POST': basket = get_basket(request.user) pk = request.POST['pk'] basket_item = OrderItem.objects.get(pk=pk) basket_item.delete() items = OrderItem.objects.filter(basket=basket) content = {"basket":basket, "items":items,} result = render_to_string('basketapp/basket_inc.html', content) else: return Http404 return JsonResponse({'result': result})
def basket_add(request, pk): basket = get_basket(user=request.user) product = get_object_or_404(Product, pk=pk) old_basket_item = OrderItem.objects.filter(basket=basket, product=product) if old_basket_item: old_basket_item[0].quantity += 1 old_basket_item[0].save() else: product = get_object_or_404(Product, pk=pk) new_basket_item = OrderItem(basket=basket, product=product) new_basket_item.quantity = 1 new_basket_item.save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_remove(request, pk): basket = get_basket(user=request.user) product = get_object_or_404(Product, pk=pk) old_basket_item = OrderItem.objects.filter(basket=basket, product=product) if not old_basket_item: pass else: if old_basket_item[0].quantity == 1: old_basket_item.delete() else: old_basket_item[0].quantity -= 1 old_basket_item[0].save() return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
def basket_edit(request, product_pk, quantity): if request.is_ajax(): quantity = int(quantity) new_basket_item = Basket.objects.get(pk=int(product_pk)) if quantity > 0: new_basket_item.quantity = quantity new_basket_item.save() else: new_basket_item.delete() context = { 'basket': get_basket(request.user), } result = render_to_string('basketapp/includes/inc__basket_list.html', context) return JsonResponse({'result': result})
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 edit(request): title = 'Редактирование' if request.method == 'POST': edit_form = ShopUserEditForm(request.POST, request.FILES, instance=request.user) if edit_form.is_valid(): edit_form.save() return HttpResponseRedirect(reverse('auth:edit')) else: edit_form = ShopUserEditForm(instance=request.user) context = { 'title': title, 'edit_form': edit_form, 'date_time': datetime.date.today, 'basket': get_basket(request), } return render(request, 'authapp/edit.html', context)
def basket_edit(request, pk, value=0): if request.is_ajax(): basket = get_basket(user=request.user) old_basket_item = get_object_or_404(OrderItem, pk=pk) if old_basket_item: if value == 0: OrderItem.objects.filter(pk=pk).delete() else: old_basket_item.quantity = value old_basket_item.save() else: product = get_object_or_404(Product, pk=pk) new_basket_item = OrderItem(basket=basket, product=product) new_basket_item.quantity = 1 new_basket_item.save() items = OrderItem.objects.filter(basket=basket) content = {"basket":basket, "items":items,} result = render_to_string('basketapp/basket_inc.html', content) else: return Http404 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)
def index(request): context = {'page_title': 'basket', 'basket': get_basket(request.user)} return render(request, 'basketapp/index.html', context)
def basket_view(request): basket = get_basket(user=request.user) items = OrderItem.objects.filter(basket=basket) content = {"basket":basket, "items":items,} return render(request, 'basketapp/basket.html', content)