Как я могу получить доступ к форме (в шаблоне), которая определена в другом приложении (представлениях) в Django

Новичок в Django. Поэтому, пожалуйста, помогите мне. Моя цель состоит в том, что я хочу получить доступ к форме из другого приложения (cart) в мое текущее приложение (shoppApp).

views.py(cart application):

from django.shortcuts import render, redirect, get_object_or_404
from django.views.decorators.http import require_POST
from shoppApp.models import Product
from .cart import Cart
from .forms import CartAddProductForm



@require_POST
def cart_add(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    form = CartAddProductForm(request.POST)
    if form.is_valid():
        cd = form.cleaned_data
        cart.add(product=product,quantity=cd['quantity'],update_quantity=cd['update'])
    return redirect('cart:cart_detail')
def cart_remove(request, product_id):
    cart = Cart(request)
    product = get_object_or_404(Product, id=product_id)
    cart.remove(product)
    return redirect('cart:cart_detail')
def cart_detail(request):
    cart = Cart(request)
    for item in cart:
        item['update_quantity_form'] = CartAddProductForm(initial={'quantity': item['quantity'],'update': True})
    return render(request, 'cart/detail.html', {'cart': cart})
def product_detail(request, id, slug):
    product = get_object_or_404(Product, id=id,slug=slug,available=True)
    cart_product_form = CartAddProductForm()
    return render(request,'shop/product/detail.html',{'product': product,'cart_product_form': cart_product_form})

forms.py(cart application)

from django import forms
PRODUCT_QUANTITY_CHOICES = [(i, str(i)) for i in range(1, 21)]
class CartAddProductForm(forms.Form):
    quantity = forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES,coerce=int)
    update = forms.BooleanField(required=False,initial=False,widget=forms.HiddenInput)

details.html(приложение shoppApp)

{% extends "shop/base.html" %}
{% load static %}
    {% block title %}
        {{ product.name }}
    {% endblock %}
    {% block content %}
        <div class="product-detail">
            <img src="{% if product.image %}{{ product.image.url }}{% else %}{% static 'img/no_img.jpg' %}{% endif %}">
            <h1>{{ product.name }}</h1>
            <h2><a href="{{ product.category.get_absolute_url }}">{{product.category }}</a></h2>
            <p class="price">${{ product.price }}</p>
            <form action="{% url 'cart:cart_add' product.id %}" method="post">
                {% csrf_token %}
                {{ cart_product_form }}
                <input type="submit" value="Add to cart">
            </form>
            {{ product.description|linebreaks }}
        </div>
       
       
    {% endblock %}

views.py(приложение shoppApp)

from django.shortcuts import render

# Create your views here.
from django.shortcuts import render, get_object_or_404
from .models import Category, Product
from cart.cart import Cart
from cart.forms import CartAddProductForm


def product_list(request, category_slug=None):
    category = None
    categories = Category.objects.all()
    products = Product.objects.filter(available=True)
    if category_slug:
        category = get_object_or_404(Category, slug=category_slug)
        products = products.filter(category=category)
    return render(request,'shop/product/list.html',{'category': category,'categories': categories,'products': products})

def product_detail(request, id, slug):
    product = get_object_or_404(Product,id=id,slug=slug,available=True)
    return render(request,'shop/product/detail.html',{'product': product})

структура проекта:
Structure of project structure of project
Пожалуйста, поправьте меня, если мой способ неправильный. Заранее спасибо.

Просто вы можете импортировать форму из корзины в приложение для покупок, сделав следующее:

from cart.forms import formname

EX: from cart.forms import UserForm

Добавьте приведенный выше код в приложение для покупок.

Это решит вашу проблему.

Вернуться на верх