Я не могу понять код функции index, а также функцию add_to_cart в файле views.py при разработке веб-сайта ecomm

Это весь код, который я хочу глубоко понять, что происходит под капотом. Этот код находится в файле views.py, и я разрабатываю веб-сайт электронной коммерции в django, используя версию python 2.7. У меня есть модель корзины, продукта и товара в файле models.py. Также мой проект называется ShoppingCart, а приложение — shopping.

from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login required
from django.contrib.auth.models import User
from django.shortcuts import render, redirect
from django.views.generic import View
from shopping.models import Cart, Product, Item
import string
import random

# Create your views here.
def index(request):
    user = request.user
    items = ''
    if user.is_anonymous():
        user = ''
    else:
        items = Item.ojects.filter(cart__user=user, cart__checked_out=False)
        items = items.count() if items else 0
    products = Product.objects.filter(total_items__get=0)

    return render(request, 'index.html', {'products':products, 'user':user, 'items':items, 'page':'home'})

def add_to_cart(request):
    user = request.user
    if user.is_anonymous():
        chars = string.ascii_uppercase + string.digits
        user_name = ''.join(random.choice(chars) for _ in range(9))
        password = '1234567a'
        user = User.objects.create(username=user_name, first_name='guest', last_name='guest', 
        email='[email protected]', is_active=True is_staff=True)
        user.set_password(password)
        user.save()
        user = authenticate(username=user_name, password=password)
        if user:
            login(request.user)

    product_id = request.GET.get('product_id')
    cart = Cart.objects.filter(checked_out=False, user=user)
    cart = cart[0] if cart else ''
    if not cart:
        cart = Cart.objects.create(user=user)
    Item.objects.create(cart=cart, product_id=product_id, quantity=1)
    return redirect('index')

Вы столкнулись с какой-то конкретной проблемой или просто хотите знать, что делает код?

Marcelo 10.04.2019 13:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю:

Представление показатель говорит: Если пользователь не является анонимным -> вернуть ему определенные значения из базы данных (cart_user равен текущему пользователю, а значение checked_out равно False), затем подсчитать товары и вернуться с «продуктами» (значение total_item равно 0)

Представление добавить в корзину в основном снова проверяет аутентификацию пользователя, и если пользователь анонимный, он создает пользователя со случайным именем пользователя, паролем, почтой, затем получает product_id из формы HTML и добавляет 1 количество единиц этого продукта для пользователя в базу данных.

Я надеюсь, что это поможет вам. Удачи!

У меня возникла путаница в понимании функции двух пользователей. Пожалуйста, объясните немного подробнее, а также скажите, что такое анонимный пользователь?

Nishchal Gupta 10.04.2019 20:53

@NishchalGupta, что вы подразумеваете под функция двух пользователей? Анонимный пользователь означает, что текущий пользователь вошел в систему нет.

Adil Shirinov 12.04.2019 12:56

Другие вопросы по теме