#python #python-3.x #django
#python #python-3.x #django
Вопрос:
Я пытаюсь создать веб-сайт электронной коммерции на Django и следую руководству.
Мой код похож на обучающее видео, но мой код не запускается. В IndentationError: from . import views
urls.py
папке моего проекта отображается файл in:
from django.urls import path,include
from . import views
urlpatterns = [
#Leave as empty string for base url
path('', views.store, name="store"),
path('cart/', views.cart, name="cart"),
path('checkout/', views.checkout, name="checkout"),
]
И IndentationError: items = order.orderitem_set.all()
в views.py
файле в папке моего проекта:
from django.shortcuts import render
from .models import *
def store(request):
products = Product.objects.all()
context = {'products':products}
return render(request, 'store/store.html', context)
def cart(request):
if request.user.is_authenticated:
customer = request.user.customer
order,created = order.objects.get_or_create(customer=customer,complete=False)
items = order.orderitem_set.all()
else:
items =[]
context = {'items':items}
return render(request,'store/cart.html', context)
def checkout(request):
context = {}
return render(request, 'store/checkout.html', context)
Я делюсь своим Cart.html
файлом здесь:
{% extends 'store/main.html' %}
{% load static %}
{% block content %}
<div class="row">
<div class="col-lg-12">
<div class="box-element">
<a class="btn btn-outline-dark" href="{% url 'store' %}">amp;#x2190; Continue Shopping</a>
<br>
<br>
<table class="table">
<tr>
<th><h5>Items: <strong>3</strong></h5></th>
<th><h5>Total:<strong> $42</strong></h5></th>
<th>
<a style="float:right; margin:5px;" class="btn btn-success" href="{% url 'checkout' %}">Checkout</a>
</th>
</tr>
</table>
</div>
<br>
<div class="box-element">
<div class="cart-row">
<div style="flex:2"></div>
<div style="flex:2"><strong>Item</strong></div>
<div style="flex:1"><strong>Price</strong></div>
<div style="flex:1"><strong>Quantity</strong></div>
<div style="flex:1"><strong>Total</strong></div>
</div>
{% for item in items %}
<div class="cart-row">
<div style="flex:2"><img class="row-image" src="{% static 'images/placeholder.png' %}"></div>
<div style="flex:2"><p>Product 1</p></div>
<div style="flex:1"><p>$20</p></div>
<div style="flex:1">
<p class="quantity">2</p>
<div class="quantity">
<img class="chg-quantity" src="{% static 'images/arrow-up.png' %}">
<img class="chg-quantity" src="{% static 'images/arrow-down.png' %}">
</div>
</div>
<div style="flex:1"><p>$32</p></div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock content %}
Комментарии:
1. Вы использовали символ табуляции в файле, который использует пробелы, или наоборот
2. в дополнение к комментарию @Boris (который, вероятно, прав): в соглашениях Python указано, что вместо табуляции следует использовать пробелы, а каждый уровень отступа должен состоять из 4 пробелов. Чтобы предотвратить такого рода проблемы, вам следует использовать редактор, который может отображать символы, такие как пробелы и табуляции (большинство редакторов кода могут расставлять точки над этим)
3. Спасибо за отзыв, сэр. Но я удалил все лишние пробелы и проверил 3 раза. пожалуйста, можете ли вы предложить какое-либо имя пакета в редакторе Atom. Я попытался добавить страницу «auto-detect-indentation.indentationTypes» в редакторе Atom, но это не работает.
4. Спасибо, сэр, за предложение, но я не нашел никаких дополнительных пробелов.