Почему я сталкиваюсь с IndentationError: unindent не соответствует ни одному внешнему уровню отступа?

#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. Спасибо, сэр, за предложение, но я не нашел никаких дополнительных пробелов.