#python #html #django #web #django-queryset
#python #HTML #django #веб #django-набор запросов
Вопрос:
я создаю веб-сайт с django, и у меня есть 2 модели в нем, 1: Gifi (содержит изображения .gif) и 2: categorite! Когда я нажимаю на одно из изображений .gif, я хочу, чтобы оно было отправлено в другой шаблон html, где отображается это изображение и информация о нем.Я выполнил некоторое кодирование, и когда я нажимаю на изображение, я попадаю на HTML-страницу, но проблема в том, что никакие данные из django не импортируются на эту HTML-страницу, кроме идентификатора в URL.Я знаю, что проблема настолько проста, но я новичок в этом, и я не знаю кода.
Это модели:
from django.db import models
class categorite(models.Model):
name = models.CharField(max_length=100)
id = models.AutoField(primary_key=True)
class Gifi(models.Model):
foto = models.ImageField(upload_to='website/static/')
emri = models.CharField(max_length=100)
Source = models.CharField(max_length=100)
Kodet = models.CharField(max_length=12)
categoryId = models.ForeignKey(categorite, on_delete=models.CASCADE)
id = models.AutoField(primary_key=True)
Это views.py:
from django.shortcuts import render,get_object_or_404
from .models import Gifi,categorite
# Create your views here.
def home(request):
return render(request, 'website/home.html')
def categories(request):
content = {
'view': categorite.objects.all()
}
return render(request, 'website/categories.html',content)
def PostaCode(request):
return render(request, 'website/PostaCode.html')
def Contact(request):
return render(request, 'website/Contact.html')
def category(request,id):
content = {
'view': Gifi.objects.filter(categoryId_id=id),
}
return render(request, 'website/category.html',content)
def code(request,id):
content = {
'view': get_object_or_404(Gifi,pk=id)
}
return render(request, 'website/code.html',content)
Это шаблон, в котором я нажимаю на изображение:
{% for gifi in view %}
<a href="{% url 'code' gifi.id %}" class="gif">
<img src="/static/{{gifi.foto}}" id="foto" alt="" >
<p id="source">Source: {{gifi.Source}}</p>
<p id="permbatjaa">Coding: {{gifi.Kodet}}</p>
</a>
{% endfor %}
Это шаблон, к которому мне нужно перейти, и где должна быть информация об изображении (code.html ):
<img src="/static/{{gifi.foto}}" id="foto" alt="" >
<p>{{gifi.emri}}</p>
Ответ №1:
Прошло несколько дней, поэтому вы уже можете получить ответ, но функция просмотра Django и шаблон настолько просты, и вы могли бы написать: models.py
:
from django.db import models
class Categorite(models.Model):
# id field is already exists models.Model not necessary
#id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100)
class Gifi(models.Model):
foto = models.ImageField(upload_to='website/static/')
emri = models.CharField(max_length=100)
source = models.CharField(max_length=100)
kodet = models.CharField(max_length=12)
category = models.ForeignKey(Categorite, on_delete=models.CASCADE, related_name='gifis')
И views.py
:
def category(request, id):
# For the foreign key fields _id field auto created also
objs = Gifi.objects.filter(category_id=id)
return render(request, 'website/category.html', {'gifis': objs})
def code(request, id):
obj = get_object_or_404(Gifi, pk=id)
return render(request, 'website/code.html', {'gifi': obj})
И шаблон website/category.html
{% for gifi in gifis %}
<a href="{% url 'code' gifi.id %}" class="gif">
<img src="/static/{{gifi.foto}}" id="foto" alt="" >
<p id="source">Source: {{gifi.source}}</p>
<p id="permbatjaa">Coding: {{gifi.kodet}}</p>
</a>
{% endfor %}
И шаблон website/code.html
<img src="/static/{{gifi.foto}}" id="foto" alt="" >
<p>{{gifi.emri}}</p>
Чтобы соответствовать спецификации PEP 8, для имен переменных рекомендуется использовать under_score, а для имен классов — camelCase.
Если вы новичок в Django, я настоятельно рекомендую, чтобы вам очень помогла страница с официальным руководством.