Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- py .\manage.py startapp Mall
- py .\manage.py makemigrations
- py .\manage.py migrate
- py .\manage.py createsuperuser
- py .\manage.py runserver
- за слики
- pip install Pillow
- 1)model.py
- from django.db import models
- from django.contrib.auth.models import User
- class Proizvoditel(models.Model):
- ime = models.CharField(max_length=100)
- lokacija = models.CharField(max_length=100)
- user = models.ForeignKey(User, on_delete=models.CASCADE)
- godina = models.IntegerField()
- broj_vraboteni = models.IntegerField()
- def __str__(self):
- return self.ime
- class Car(models.Model):
- TIP = [
- ("sedan", "Sedan"),
- ("SUV", "SUV"),
- ("hatchback", "Hatchback"),
- ("coupe", "Coupe")
- ]
- proizvoditel = models.ForeignKey(Proizvoditel, on_delete=models.CASCADE)
- cena = models.IntegerField()
- broj_shasija = models.CharField(max_length=50, unique=True)
- model_na_avtomobil = models.CharField(max_length=100)
- boja = models.CharField(max_length=100)
- godina_proizvodstvo = models.IntegerField()
- kilometrazha = models.FloatField()
- tip = models.CharField(max_length=10, choices=TIP)
- photo = models.ImageField(upload_to="cars/", null=True, blank=True)
- def __str__(self):
- return f"{self.model_na_avtomobil} - {self.proizvoditel.ime}"
- ----------------------------------------------------
- 2)admin.py
- from django.contrib import admin
- from CarApp.models import Car, Proizvoditel
- # Register your models here.
- class CarAdmin(admin.ModelAdmin):
- list_display = ('model_na_avtomobil', 'boja', 'tip')
- admin.site.register(Car, CarAdmin)
- class ProizvoditelAdmin(admin.ModelAdmin):
- def save_model(self, request, obj, form, change):
- obj.user = request.user
- super().save_model(request, obj, form, change)
- admin.site.register(Proizvoditel, ProizvoditelAdmin)
- ----------------------------------------------------
- 3)urls.py
- from django.urls import path
- from django.contrib import admin
- from CarApp import views as CarViews
- urlpatterns = [
- path('admin/', admin.site.urls),
- path('index/', CarViews.index, name='index'),
- path('product/<int:kola_id>/', CarViews.details, name='details')
- ]
- ----------------------------------------------------
- 4)views.py
- from django.shortcuts import render
- # Create your views here.
- from .models import *
- def index(request):
- koli=Car.objects.all()
- context = {'koli':koli}
- return render(request, 'index.html', context)
- def details(request, kola_id):
- kola = Car.objects.filter(id=kola_id).first()
- context = {'kola': kola}
- return render(request, 'details.html', context)
- ----------------------------------------------------
- 5)settings.py
- import os
- INSTALLED_APPS = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'CarApp'
- ]
- # tuka
- MEDIA_ROOT=os.path.join(BASE_DIR, "media/")
- MEDIA_URL='/media/'
- ----------------------------------------------------
- 6)template.py
- index.html
- {% load static %}
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>CarApp</title>
- <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
- </head>
- <body>
- <!-- Navbar -->
- <nav class="navbar navbar-expand-lg navbar-light bg-info">
- <div class="container-fluid">
- <a class="navbar-brand fw-bold " style="margin-left: 300px" href="/index">Lab4 DNICK</a>
- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
- aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse justify-content-end" id="navbarNav">
- <ul class="navbar-nav">
- <li class="nav-item">
- <a class="nav-link fw-semibold" style="margin-right: 300px" href="#">Home</a>
- </li>
- </ul>
- </div>
- </div>
- </nav>
- <!-- Main content -->
- <div class="container mt-5">
- <h2 class="text-center mb-4">All Cars</h2>
- <div class="row row-cols-1 row-cols-md-2 row-cols-lg-4 g-4">
- {% for kola in koli %}
- <div class="col">
- <div class="card h-100 shadow-sm">
- <img src="{{ kola.photo.url }}" class="card-img-top" style="height: 180px; object-fit: cover;" alt="Car Image">
- <div class="card-body">
- <h5 class="card-title">{{ kola.model_na_avtomobil }}</h5>
- <p class="card-text mb-1">{{ kola.proizvoditel.ime }}</p>
- <p class="card-text mb-1">{{ kola.kilometrazha }} km</p>
- <p class="card-text mb-1">{{ kola.cena }} $</p>
- </div>
- <div class="card-footer text-center">
- <a href="{% url 'details' kola.id %}" class="btn btn-outline-primary">Details</a>
- </div>
- </div>
- </div>
- {% endfor %}
- </div>
- </div>
- <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
- </body>
- </html>
- ----------------------------------------------------
- 7)detail.html
- {% load static %}
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>CarApp</title>
- <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
- </head>
- <body>
- <!-- Navbar -->
- <nav class="navbar navbar-expand-lg navbar-light bg-info">
- <div class="container-fluid">
- <a class="navbar-brand fw-bold " style="margin-left: 300px" href="/index">Lab4 DNICK</a>
- <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
- aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
- <span class="navbar-toggler-icon"></span>
- </button>
- <div class="collapse navbar-collapse justify-content-end" id="navbarNav">
- <ul class="navbar-nav">
- <li class="nav-item">
- <a class="nav-link fw-semibold" style="margin-right: 300px" href="#">Home</a>
- </li>
- </ul>
- </div>
- </div>
- </nav>
- <h2>{{ kola.tip }}</h2>
- <h3>{{ kola.model_na_avtomobil }}</h3>
- <h3>{{ kola.boja }}</h3>
- <a href="{% url 'index' %}" class="btn btn-primary">Back</a>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment