Многое из того, что у вас есть, не нужно или неправильно. Исправьте все, что у вас есть в этом. Обратите внимание на мои комментарии. Я предполагаю, что ваши HTML-шаблоны находятся в правильном месте, поэтому они отображаются правильно.
ПРОЕКТ КОРНЯ:
# urls.py
urlpatterns = [
path("admin/", admin.site.urls),
path("", views.home, name="home"), # this makes yourwebsite.com/ the home page... Don't include yourwebsite.com/catalog/ twice, cause that's what you had.
path("catalog/", include("catalog.urls")),
path("cart/", include("cart.urls")),
]
# views.py
def home(request):
return render(request, 'template_name.html')
ПРИЛОЖЕНИЕ ВАШ КАТАЛОГ:
# urls.py
app_name = "catalog_app"
# all html templates linking to catalog/ must now use the following pattern: {% url 'catalog_app:name_argument' %}... examples follow...
urlpatterns = [
path("", views.catalog_home, name="catalog_home"), # goes website.com/catalog/, and must be referenced as {% url 'catalog_app:catalog_home' %} in html templates
path("show_category/<slug:category_slug>/", views.show_category, name="show_category"), # goes to website.com/catalog/show_category/category_slug/
path("<slug:product_slug>/", views.show_product, name="catalog_product")
]
# views.py
from .models import YourCategoryClassModel
def show_category(request, category_slug):
# the following .get() requires you to have an instance already created in the admin panel for it to work. Otherwise it won't work and you'll get errors.
your_model_value = YourCategoryClassModel.objects.get(id=category_slug)
return render(request, 'your_template.html', {'your_model_key': your_model_value})
# your_template.html
<p>{{ your_model_key.attribute_name }}</p>
<p>{{ your_model_key.whatever_you_called_them }}</p>
<p>{{ your_model_key.lowercaserelatedmodelname_set.any_method_or_attribute_for_that_model }}</p>
<!-- Or you can use the following -->
<p>{{ your_model_key.lowercaserelatedmodelname_set.all }}</p>
Таким образом, для вышеприведенного шаблона, если у вас есть класс Parent
и класс Child
, связанные с родителем полем ForeignKey, шаблон будет выглядеть так:
<p>{{ your_model_key.child_set.all }}</p>