@tonyjasta

Вопрос по выводу контента Django в HTML?

Есть разверстанная страница. Однако, все, что в ней отображается, задано в HTML (картинки, текст и тд)
Как сделать вывод контента из базы данных ?

https://codeshare.io/ZwwR8 тут попытка сделать это, однако не вышло. :(
  • Вопрос задан
  • 4049 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Ну так передавайте во вьюхах данные в контекст, и в темплейтах эти данные собственно выводите.

В views.py передаете в контекст какие-то данные:
from django.http import Http404
from django.shortcuts import render
from models import КакаяТоМодель

def my_view(request, какой_то_id):
    try:
        my_obj = КакаяТоМодель.objects.get(pk=какой_то_id)
    except КакаяТоМодель.DoesNotExist:
        raise Http404(u"Объект КакаяТоМодель с id={id} отсутствует в базе".format(id=какой_то_id))

    какая_то_переменная = ФункцияДляПолучениЧегоТоИзБазы()
    return render(request, 'какой_то_темплейт.html', {'my_obj': my_obj, 'my_var': какая_то_переменная})


а в темплейте получаете то что передали в контекст
...
{{ my_obj.какое_то_поле }}
{{ my_obj.какое_то_поле }}
....
{{ my_var }}
....


А вообще вот это:
class BannerView(View):
model = Banner
template_name = 'home.html'

def get_queryset(self):
return Banner.objects.all()


нужно заменить на это:
class BannerView(ListView):
    model = Banner
    template_name = 'home.html'

тогда в темплейте список всех ваших объектов передастся в виде object_list, по которым вы можете пробежаться как-то так:
....
{% for obj in object_list %}
     {{ obj.какое_то поле }}
{% endfor %}
....


тут
class HomePage(TemplateView):
template_name = 'home.html'

контекст можно передать так:

class HomePage(TemplateView):
    template_name = 'home.html'

def get_context_data(self, *args, **kwargs):
    context = super(HomePage, self).get_context_data(*args, **kwargs)
    context['имя_какой_то_переменной_для_темплейта'] = ФункцияДляПолученияКакихТоДанных()
    return context


тогда в темплейте она будет доступна как:

....
{{ имя_какой_то_переменной_для_темплейта }}
....


А вообще - пройдите хотя бы какой-нибудь туториал по Django где это подробно объясняется...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
suguby
@suguby
программист, python, django, mysql, git, hg, linux
Как запускаете сервер? какая версия джанги?
Статику в нужные директории положили?
Надо понимать, что статика и медиа файлы - разные вещи. Статика это css+js+icon - то что отображается всегда на сайте, хранится это обычно на файловой системе и в проде отдается веб-сервером (nginx или apache)
Медиа файлы - могут загружаться пользователями, метаинформация для них лежит в базе, а сами файлы - тоже на файловой системе.
Подробнее - djbook.ru/rel1.9/howto/static-files/index.html и djbook.ru/rel1.9/topics/files.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы