Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 6, 2013 23:20:00

fireamper
Зарегистрирован: 2013-10-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

Здравствуйте, я новичок в django. Вопрос такой: существуют ли стандартные способы динамического добавления функций в views и адресов в urls приложения, используя поля бд.
Уточнение: допустим есть функции написаные мной в views. Добавилось новое поле в бд, и по какому-нибудь событию, присходит автоматическое добавление кода новой функции в views. Тоже касается и urls - которые будут указывать на новую функцию. То есть в целом, по новому полю происходит автоматическое программирование новой страницы.
Спасибо за помощь.

Офлайн

#2 Ноя. 6, 2013 23:35:30

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

fireamper
думаю такого в джанги такой фишки нет, но это питон возьми да и сгенерируй что тебе надо.

Хотя если поведаешь нам что у тебя за проблема, может что и конкретное посоветуют

Отредактировано Singularity (Ноя. 6, 2013 23:36:55)

Офлайн

#3 Ноя. 6, 2013 23:58:45

fireamper
Зарегистрирован: 2013-10-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

Пока что это на стадии идеи, а идея такова:
В админке добавляется новая запись в таблицу, например это записи пунктов меню. После добавления этой записи по какому-нибудь событию все создается - добавляется адрес в urls.py и функция представления в views.py. То есть добавил запсиь в бд - получил новый, уже рабочий пункт меню.
На счет генерации питоном это понятно(в смысле не знаю как реализовать, но понимаю что питоном обработать файлы view.py и urls.py и подобавлять строки в код).

Офлайн

#4 Ноя. 7, 2013 00:35:24

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

fireamper
так поля или записи ?

Офлайн

#5 Ноя. 7, 2013 01:10:32

fireamper
Зарегистрирован: 2013-10-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

новая запись в существующую таблицу

Офлайн

#6 Ноя. 7, 2013 06:19:44

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

На подакшене такое не прокатит... uwsgi сервер всё равно релоадить придётся Что Вам мешает написать регулярку в урл? models.py:

class MyMenuItem(models.Model):
    title = models.CharField(max_lenght=100)
    def get_url(self):
        return reverse('myview', args=[self.pk])

urls.py:

...
 url(r'^menu_path/(?P<pk>\d+)/$', MenuView.as_view(), name='myview'),
...

ну соответственно views.py:

class MenuView(TemplateView):
    ...
    def get_context_data(self, **kwargs):
        context = super(MenuView, self).get_context_data(**kwargs)
        ...
        context['current_menu_item'] = MyMenuItem.objects.get(pk=self.kwargs['pk'])
        ...
        return context

Отредактировано hulygun (Ноя. 7, 2013 06:21:33)

Офлайн

#7 Ноя. 7, 2013 20:06:32

fireamper
Зарегистрирован: 2013-10-02
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

Спасибо за верное направление! Я какую-то бяку стал придумывать. Решение проще некуда оказалось. Но в Вашем коде я не до конца разобрался, объясните: функция get_url что возвращает? urlf адрес? И зачем использовали класс TemplateView?

Офлайн

#8 Ноя. 8, 2013 05:32:05

hulygun
Зарегистрирован: 2012-08-25
Сообщения: 74
Репутация: +  2  -
Профиль   Отправить e-mail  

Динамическое добавление в views и urls

да, get_url() возвращает ссылку на соответствующую страницу по поводу TemplateView, то можете использовать любой подходящий для Вашей задачи Документация по Class-based views тут

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version