Аватар для fof_fa
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 70

Вывод views в базовый шаблон

11.05.2019, 15:25. Показов 3411. Ответов 4

Студворк — интернет-сервис помощи студентам
есть приложение Callback (форма заявки обратного звонка), которое должно выводиться на всех страницах сайта.

models.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.db import models
from django.forms import ModelForm
from phonenumber_field.modelfields import PhoneNumberField
 
 
 
class Callback(models.Model):
    id = models.AutoField
    name = models.CharField(max_length=120, unique=False, verbose_name="Имя")
    phone = PhoneNumberField(null=False, verbose_name="Tелефон")
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True, verbose_name="Дата заявки") 
    
    def __unicode__(self):
        return self.name
        
    def __str__(self):
        return self.name
        
    class Meta:
        ordering = ["-id", "-timestamp"]
        verbose_name = 'Заявка на обратный звонок'
        verbose_name_plural = 'Заявки на обратный звонок'
forms.py
Python
1
2
3
4
5
6
7
8
9
10
from .models import Callback
from django.forms import ModelForm
from django import forms
 
class CallbackForm(ModelForm):
    class Meta:
        model = Callback
        fields = ['name', 'phone']       
        def __init__(self, *args, **kwargs):
            super(CallbackForm, self).__init__(*args, **kwargs)
views.py
Python
1
2
3
4
5
6
7
8
9
10
11
from django.shortcuts import render, get_object_or_404
from .forms import CallbackForm
 
def callback(request):
    if request.method == "POST":        
        Callback = CallbackForm(request.POST)
        if Callback.is_valid():
            Callback.save()
    else:
        Callback = CallbackForm() 
    return render(request, "/templates/base.html", {'Callback': Callback})
base.html
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
...
<div id="myModal" class="modal">
  <div class="modal-content">
    <div class="modal-header">
      <span class="close">&times;</span>
      <h2>Заказать обратный звонок</h2>
    </div>
    <form method="POST" class="post-form">{% csrf_token %}
        {{ Callback.as_table }}
        <button type="submit" class="save btn btn-default">Отправить</button>
    </form>
   
  </div>
</div>
...
шаблон base.html находится в папке templates на уровне проекта и контекст в него не выводится. Подскажите, как сделать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2019, 15:25
Ответы с готовыми решениями:

Вывод переменной из другой Views
Создал проект с уже готовым шаблоном. Переделал под себя структуру, регистрацию и авторизацию. Т.е. посылаю запросы на SQL Server. Но у...

Передать параметры в базовый шаблон html
Простой Django проект в PyCharm. У меня есть базовый шаблон (base.html), который я потом расширяю в дополнительных html файлах. Мои вюшки...

Как узнать базовый Template (Шаблон) элемента в WPF?
Всем привет! Извините за глупый, может быть, вопрос есть ли возможность в WPF узнать базовый шаблон элемента, в частности ComboBox, в Blend...

4
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
11.05.2019, 16:55
fof_fa, подозреваю, что тут без создания тегов не обойтись.
https://docs.djangoproject.com... late-tags/
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
11.05.2019, 18:27
Фигня вопрос:
HTML5
1
<form action="/путь/до/обработчика/формы">
Создаём и подключаем новый контекст-процессор:
Python
1
2
3
return {
    'Callback': CallbackForm(),
}
0
 Аватар для fof_fa
0 / 0 / 0
Регистрация: 27.09.2015
Сообщений: 70
05.08.2019, 11:51  [ТС]
Пошел по пути создания тега

в папке приложения создал папку templatetags с файлами __init__.py и callback.py. Код из callback.py:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from django.shortcuts import render, get_object_or_404
from django import template
from callback.forms import CallbackForm
from django.core.mail import mail_admins
from django.http import HttpResponse
 
register = template.Library()
 
@register.inclusion_tag('callback/callback.html')
def callback(request):
    if request.method == "POST":        
        Callback = CallbackForm(request.POST)
        if Callback.is_valid():
            Callback.save()
        else:
            Callback = CallbackForm() 
    return render(request, {'Callback': Callback})
При вставке тега в шаблон главной страницы выходит ошибка:
Python
1
'callback' did not receive value(s) for the argument(s): 'request'
Получается что функция с аргументом request работает, когда к пользователь переходит по маршруту в urls.py, я правильно понимаю?
как сделать, чтобы тег работал на любой странице, без привязки к urls.py?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
05.08.2019, 13:10
fof_fa,
Python
1
2
3
4
@register.inclusion_tag('callback/callback.html', takes_context=True)
def address(context):
    request = context['request']
    ....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.08.2019, 13:10
Помогаю со студенческими работами здесь

Включить другие страницы в базовый шаблон главной страницы
Здравствуйте! Подскажите, пожалуйста, каким способом можно включить вывод страниц (aboutus.php, contact.php) в отображение на главной...

Базовый класс в иерархии наследования. Вывод свойств объектов
Здрасти. Помогите исправить функцию print_out именно таким образом: void print_out() { void print_out_prop1(); //...

Какой шаблон тут используется? Шаблон класса или шаблон функции
Какой шаблон тут используется? Шаблон класса или шаблон функции,и с объяснениями пожалуйста #include &lt;iostream&gt; using...

Вывод данных из бд в шаблон
Здравствуйте, пользую шаблонизатором Twig. Может кто нибудь помочь с выводом данных в шаблон. Кто делал киньте исходник для примера

Шаблон и вывод меню
Я слабо владею PHP ( только учусь ) и мне нужно отредактировать шаблон страницы темы, чтобы вставить в дочерней странице свое меню ,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: показать затраченные материалы за определенный период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru