Повторное использование приложений Django для повторного использования - PullRequest
1 голос
/ 17 ноября 2010

Мне было интересно, возможно ли это реализовать (как приложение / промежуточное ПО):

Я устанавливаю приложение регистрации django.Затем я создаю свое основанное на сайте приложение для создания общих просмотров страниц.Я хочу разместить форму входа и форму регистрации на первой странице.Поэтому я вхожу и изменяю шаблоны /register/login.html и register / register.html, чтобы они соответствовали дизайну моей главной страницы (html).Затем я перехожу к файлу index.html главной страницы, и я захожу в то место в моем html, куда я хочу, чтобы эти блоки (логин и регистрация), и я добавляю {% load "register / login.html"%} и{% load "register / register.html"%}.Теперь, когда urlconf вызывает представление моего индекса, шаблон достигнет триггера LOAD и вызовет представление LOGIN, чтобы все его элементы form.elements были переданы ему, и представление REGISTER также вызывается для его элементов.Затем эти завершенные (обработанные) представления передаются в мой index.html и подключаются к тому месту, где я помещаю операторы LOAD.

Можно ли сделать вышеизложенное в настоящее время?Моя цель состоит в том, чтобы взять различные доступные приложения и подключить их к моему проекту, не затрагивая их код (я хочу убедиться, что смогу обновить отдельные приложения позже и ничего не сломать в своем проекте, потому что я добавил пользовательские элементы ...).

Если вышеперечисленное возможно в настоящее время, может кто-нибудь предоставить какие-нибудь документы / учебные пособия / инструкции по передовым методам повторного использования приложений других людей?

Ответы [ 2 ]

0 голосов
/ 18 ноября 2010

Как насчет простой модификации представлений в приложении, которое я повторно использую, чтобы включить дополнительный аргумент, чтобы увидеть, используется ли он как SUBVIEW (и, следовательно, не возвращать render_to_response ()), и проверить «FORMNAME» вданные запроса.Затем, если SUBVIEW (представление приложения, которое я повторно использую) находит свое «FORMNAME» в запросе. POST обрабатывает форму.Если данные request.POST не предоставлены, он вернет словарь со всеми элементами формы, а не render_to_response ().Затем я могу вызвать эту функцию в моем представлении для главной страницы и передать возвращенный словарь значений в мой шаблон вместе с любыми другими компонентами.При отправке вызывается функция, и если она находит «Имя формы» в данных запроса. POST (это «Имя формы» может находиться в скрытом поле, она будет обрабатывать эту форму, в противном случае она возвратитсловарь элементов формы, и на мой взгляд будет вызвана следующая функция, которая может быть связана с представлением django.contrib.django-registration.register (). Это приведет к ULTIMATE RE-USABILITY!

Thisспособ, которым я также получаю доступ к form.errors !!

Мой взгляд:

def index(request):
   login = django.contrib.register.login(request, ... , Subview=True)
   register = django.contrib.register.register(request, ... , Subview=True)

   return render_to_response('index.html', {'login_form': login, 'register_form': register})

В качестве альтернативы я мог бы разветвлять каждое приложение и изменять его ..., что противоречит цели повторного использованияприложение является независимым пакетом, а скорее обрабатывается как сложная вставка кода.

0 голосов
/ 17 ноября 2010

Конечно, есть тег {% include %}, который позволяет вам включать шаблоны непосредственно в другой шаблон.Он также получает все, что получает вложенный шаблон, поэтому, если вы используете RequestContext, это означает, что он имеет доступ ко всему в переменной запроса.

Однако, кажется, вы говорите, что хотите как-то на самом деле вызватьпросмотр регистра и вход в систему и встраивание результата на вашу страницу.Теоретически это может быть возможно путем написания пользовательского тега, который вызывает URL-адрес с использованием http GET, и последующего вывода полученного HTML-кода из запроса.

Я бы не рекомендовал этого.Вместо этого для первой страницы создайте две формы, которые указывают на соответствующие URL-адреса в приложении django-registration.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...