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, throughpython manage.py startapp home. createtemplatesfolder for html files inside app at the pathhome/templates/home/index.html, this meanstemplate 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.