Это весь код, который я хочу глубоко понять, что происходит под капотом. Этот код находится в файле 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')
Насколько я понимаю:
Представление показатель говорит: Если пользователь не является анонимным -> вернуть ему определенные значения из базы данных (cart_user равен текущему пользователю, а значение checked_out равно False), затем подсчитать товары и вернуться с «продуктами» (значение total_item равно 0)
Представление добавить в корзину в основном снова проверяет аутентификацию пользователя, и если пользователь анонимный, он создает пользователя со случайным именем пользователя, паролем, почтой, затем получает product_id из формы HTML и добавляет 1 количество единиц этого продукта для пользователя в базу данных.
Я надеюсь, что это поможет вам. Удачи!
У меня возникла путаница в понимании функции двух пользователей. Пожалуйста, объясните немного подробнее, а также скажите, что такое анонимный пользователь?
@NishchalGupta, что вы подразумеваете под функция двух пользователей? Анонимный пользователь означает, что текущий пользователь вошел в систему нет.
Вы столкнулись с какой-то конкретной проблемой или просто хотите знать, что делает код?