Creating a complete Django web application with all the features you mentioned requires a lot of code and explanation. However, I can provide you with an outline of how to create such an application along with some sample code snippets.

1. Set up your Django project and app:

First, make sure you have Python and Django installed on your system. Then, create a new Django project and a new app within that project (e.g., "ecommerce").

```bash
django-admin startproject my_ecommerce_project
cd my_ecommerce_project
python manage.py startapp ecommerce
```

2. Create models for products and shopping cart items:

In `ecommerce/models.py`, define two classes: `Product` and `CartItem`.

```python
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    image = models.ImageField(upload_to='products/')

    def __str__(self):
        return self.name

class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)

    def __str__(self):
        return f"{self.product.name} - {self.quantity}"
```

3. Create views for listing products, adding/removing items from the cart, and processing payments:

In `ecommerce/views.py`, create views for each of these functionalities.

```python
from django.shortcuts import render, redirect, get_object_or_404
from .models import Product, CartItem

def product_list(request):
    products = Product.objects.all()
    return render(request, 'ecommerce/product_list.html', {'products': products})

def add_to_cart(request, product_id):
    product = get_object_or_404(Product, id=product_id)
    cart_item, created = CartItem.objects.get_or_create(product=product)
    if not created:
        cart_item.quantity += 1
        cart_item.save()
    return redirect('ecommerce:product_list')

def remove_from_cart(request, cart_item_id):
    cart_item = get_object_or_404(CartItem, id=cart_item_id)
    cart_item.delete()
    return redirect('ecommerce:cart')

def cart(request):
    cart_items = CartItem.objects.all()
    total_price = sum(item.product.price * item.quantity for item in cart_items)
    return render(request, 'ecommerce/cart.html', {'cart_items': cart_items, 'total_price': total_price})

def process_payment(request):
    # Implement payment processing logic here (e.g., using Stripe or PayPal APIs)
    pass
```

4. Create templates for product listing and shopping cart:

Create the following HTML files in `ecommerce/templates/ecommerce/`:

- `base.html`: Base template with common elements like header and footer.
- `product_list.html`: Template for displaying a list of products.
- `cart.html`: Template for displaying the shopping cart.

5. Set up URL routing:

In `ecommerce/urls.py`, define URLs for each view.

```python
from django.urls import path
from . import views

app_name = 'ecommerce'

urlpatterns = [
    path('', views.product_list, name='product_list'),
    path('add_to_cart/<int:product_id>/', views.add_to_cart, name='add_to_cart'),
    path('remove_from_cart/<int:cart_item_id>/', views.remove_from_cart, name='remove_from_cart'),
    path('cart/', views.cart, name='cart'),
    path('process_payment/', views.process_payment, name='process_payment'),
]
```

6. Configure settings:

Add your app to the `INSTALLED_APPS` list in `my_ecommerce_project/settings.py`. Also, configure the media settings for handling uploaded images.

```python
INSTALLED_APPS = [
    # ...
    'ecommerce',
]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
```

7. Run migrations and start the development server:

Run the following commands to create database tables and start the development server.

```bash
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
```

Now you should have a basic e-commerce website with product listings and shopping cart functionality. To implement payment processing, you can use third-party libraries like `django-stripe` or `django-paypal`.

Please note that this is just a starting point, and there are many improvements you can make, such as adding user authentication, improving the UI/UX, and optimizing performance.
말씀하신 모든 기능을 갖춘 완전한 Django 웹 애플리케이션을 만들려면 많은 코드와 설명이 필요합니다. 하지만 몇 가지 샘플 코드 스니펫과 함께 이러한 애플리케이션을 만드는 방법에 대한 개요를 제공할 수 있습니다.

1. 장고 프로젝트 및 앱 설정하기

먼저, 시스템에 Python과 장고가 설치되어 있는지 확인합니다. 그런 다음 새 Django 프로젝트와 해당 프로젝트 내에 새 앱(예: "ecommerce")을 만듭니다.

```bash
django-admin startproject my_ecommerce_project
cd my_ecommerce_project
python manage.py startapp ecommerce
```

2. 제품 및 장바구니 항목에 대한 모델 생성: 

`ecommerce/models.py`에서 `Product`와 `CartItem`의 두 클래스를 정의합니다.

```python
from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    image = models.ImageField(upload_to='products/')

    def __str__(self):
        return self.name

class CartItem(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=1)

    def __str__(self):
        return f"{self.product.name} - {self.quantity}"
```

3. 제품 목록, 카트에서 품목 추가/제거, 결제 처리를 위한 보기 생성: 

`ecommerce/views.py`에서 이러한 각 기능에 대한 보기를 생성합니다.

```python
from django.shortcuts import render, redirect, get_object_or_404
from .models import Product, CartItem

def product_list(request):
    products = Product.objects.all()
    return render(request, 'ecommerce/product_list.html', {'products': products})

def add_to_cart(request, product_id):
    product = get_object_or_404(Product, id=product_id)
    cart_item, created = CartItem.objects.get_or_create(product=product)
    if not created:
        cart_item.quantity += 1
        cart_item.save()
    return redirect('ecommerce:product_list')

def remove_from_cart(request, cart_item_id):
    cart_item = get_object_or_404(CartItem, id=cart_item_id)
    cart_item.delete()
    return redirect('ecommerce:cart')

def cart(request):
    cart_items = CartItem.objects.all()
    total_price = sum(item.product.price * item.quantity for item in cart_items)
    return render(request, 'ecommerce/cart.html', {'cart_items': cart_items, 'total_price': total_price})

def process_payment(request):
    # Implement payment processing logic here (e.g., using Stripe or PayPal APIs)
    pass
```

4. 제품 목록 및 장바구니용 템플릿을 생성합니다:

`ecommerce/templates/ecommerce/`에 다음 HTML 파일을 생성합니다:

- `base.html`: 머리글 및 바닥글과 같은 공통 요소가 포함된 기본 템플릿입니다.
- `product_list.html`: 제품 목록을 표시하기 위한 템플릿입니다.
- `cart.html`: 장바구니 표시용 템플릿입니다.

5. URL 라우팅 설정: 

`ecommerce/urls.py`에서 각 보기에 대한 URL을 정의합니다.

```python
from django.urls import path
from . import views

app_name = 'ecommerce'

urlpatterns = [
    path('', views.product_list, name='product_list'),
    path('add_to_cart/<int:product_id>/', views.add_to_cart, name='add_to_cart'),
    path('remove_from_cart/<int:cart_item_id>/', views.remove_from_cart, name='remove_from_cart'),
    path('cart/', views.cart, name='cart'),
    path('process_payment/', views.process_payment, name='process_payment'),
]
```

6. 설정 구성: 

`my_ecommerce_project/settings.py`의 `INSTALLED_APPS` 목록에 앱을 추가합니다. 또한 업로드된 이미지 처리를 위한 미디어 설정을 구성합니다.

```python
INSTALLED_APPS = [
    # ...
    'ecommerce',
]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
```

7. 마이그레이션 실행 및 개발 서버 시작:

다음 명령을 실행하여 데이터베이스 테이블을 생성하고 개발 서버를 시작합니다.

```bash
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
```

이제 제품 목록과 장바구니 기능을 갖춘 기본적인 전자상거래 웹사이트가 생겼을 것입니다. 결제 처리를 구현하기 위해 `django-stripe` 또는 `django-paypal`과 같은 타사 라이브러리를 사용할 수 있습니다.

이것은 시작에 불과하며 사용자 인증 추가, UI/UX 개선, 성능 최적화 등 개선할 수 있는 사항이 많이 있습니다.