Model_type в шаблоне Django

Я изучаю Django по книге "Веб-разработка с Django". В одном из заданий есть тег в одном из шаблонов, как показано ниже:

{% block title %}
{% if instance %}
Editing {{ model_type }} {{ instance }}
{% else %}
New {{ model_type }}
{% endif %}
{% endblock %}

Что такое model_type? Я никогда раньше не видел этот тег. Его нет ни в одной из функций view.py или где-либо еще. Спасибо

Django работает по шаблону проектирования MVT[javapoint], поэтому независимо от того, должен ли instances,querysets проходить через view, будь то жесткий код или выборка из любого Model.

model_type не является каким-либо встроенным свойством или чем-либо еще, они передаются через представления.

Рассмотрим первый пример (Вещи жестко закодированы):

Create a project and create an application home, through python manage.py startapp home. create templates folder for html files inside app at the path home/templates/home/index.html, this means template namespacing[django-doc]

Note: Не нужно давать templates в APP_DIRS в settings.py, они даются только тогда, когда мы помещаем все шаблоны из всех приложений, во внешнюю папку, то же самое для static.

index.html

<body>
    <h2>Name : {{name}}</h2>
    <h2>Technology : {{technology}}</h2>
</body>

views.py

from django.shortcuts import render


def home(request):
    context = {
        'name': 'reza',
        'technology': 'django'
    }
    return render(request, 'home/index.html', context)

urls.py

from django.urls import path
urlpatterns = [
    path('home/', views.home, name='home')
]

В приведенном выше примере все закодировано, но мы обычно используем в циклах.

Рассмотрим второй пример (данные взяты из базы данных):

В этом примере я создал модель, и данные будут поступать динамически.

models.py

from django.db import models


class StudentDetail(models.Model):
    name = models.CharField(max_length=100)
    email = models.EmailField(max_length=200)
    total_marks = models.PositiveIntegerField()

    class Meta:
        ordering = ['name']

    def __str__(self):
        return f"Record of {self.name} was added."

Теперь зарегистрируйте его в admin.py, чтобы увидеть в интерфейсе администратора.

admin.py

from django.contrib import admin
from .models import StudentDetail

@admin.register(StudentDetail)
class StudentDetailAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', 'email', 'total_marks']

Теперь выполните python manage.py makemigrations, затем выполните python manage.py migrate.

Теперь создайте суперпользователя, чтобы добавить некоторые данные вручную, с помощью python manage.py createsuperuser.

Затем добавьте 3 или 4 записи в базу данных через интерфейс администратора.

Теперь сделайте так, чтобы ваши представления получали объекты динамически.

views.py

from django.shortcuts import render
from .models import StudentDetail


def home(request):
    all_students = StudentDetail.objects.all()
    context = {
        'all_students': all_students

    }
    return render(request, 'home/index.html', context)

index.html

<body>
    <table border='3px' cellpadding='1px' cellspacing='5px' style='text-align:center;'>
        <thead>
            <tr>
                <th>Name</th>
                <th>Email</th>
                <th>Total Marks</th>
            </tr>
        </thead>
        <tbody>
            {% for student in all_students  %}
            <tr>
                <td>{{student.name}}</td>
                <td>{{student.email}}</td>
                <td>{{student.total_marks}}</td>
            </tr>
            {% endfor %}
        </tbody>
    </table>    
</body>

Вышеуказанным способом работа закончена, я рекомендую вам непосредственно прочитать и изучить все из django-doc. На первом уровне начинается с topic-guides, а также посмотрите, как организована documentation.

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