2016-07-18 8 views
-1

Как и в названии, у меня есть два проекта Django. В отличие от других вопросов SO, это совершенно разные проекты, а это означает, что они не используют базу данных, среду хостинга, доменное имя и т. Д. Это то, что я хочу и нуждаюсь в полной развязке между проектами.Как мне получить два разных проекта Django?

Однако у них есть определенные модели (скажем, UserProfile) из одного приложения, которое требуется в обоих проектах. Кроме того, я хотел бы иметь только один из проектов, позволяющих выполнять вход в систему, входить в систему, забывать/перезапускать пароль.

Моя идея заключается в том, чтобы иметь RESTful API, для них обоих, но я до сих пор есть несколько вопросов о том, как правильно достичь этого:

  • что делать с повторяющимися моделями, чтобы держать их в синхронизации? Создать конечные точки, которые могут быть изменены другим проектом?
  • как я могу продолжить с помощью единого входа? Нужен ли мне для этого специализированный сервер? Я также хотел бы воспользоваться инструментами, предоставляемыми Django, такими как мой текущий пользователь на моем объекте запроса.

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

Если мой вопрос недостаточно ясен, сообщите мне, пожалуйста, с комментарием.

спасибо.

+0

вам нужны модели, чтобы быть синхронизированы немедленно, в режиме реального времени, или некоторая задержка приемлема ли? – user773328

+0

Задержка приемлема, если существует не слишком длительный период времени (пару минут), что позволяет говорить, что они синхронизированы с высокой степенью достоверности. – AdelaN

ответ

-1

Во-первых, если вам нужна модель UserProfile в обоих из них, и если вы не используете базы данных, вы помещаете избыточные данные в свою базу данных, то есть одни и те же данные в обеих базах данных d1 и d2.

Единственное возможное решение, о котором я мог думать, это наличие двух отдельных баз данных d1 и d2, доступных для обоих. Таким образом, даже если изменения происходят в say d1, используя app1, то также вы можете обнаружить эти изменения в app2, и, следовательно, то же самое относится и к app1, обнаруживающим изменения d2.

Таким образом, когда ваш пользователь регистрируется в приложении 1, изменения происходят в d1, который также считывается с помощью приложения2, и поэтому приложение 2 не требует аутентификации пользователя отдельно.

Смотреть это ->https://docs.djangoproject.com/en/1.9/topics/db/multi-db/

И это тоже ->Can I have two django projects sharing the same authentication model?

+0

Эй, спасибо за ваш ответ, но, возможно, я не был достаточно ясен. Я хочу, чтобы полная развязка, поэтому позволить одному проекту читать базу данных другого проекта не является вариантом :(Резервирование - это действительно путь, но я хотел бы решить проблемы согласованности на уровне API, а не на уровне базы данных. нужна эта абстракция, чтобы повторно использовать любой из моих проектов. – AdelaN

+0

Что вы подразумеваете под «повторным использованием»? Можете ли вы привести пример, когда вы будете повторно использовать проект? – user773328

+0

Например, если мне когда-нибудь понадобится заменить один из проектов, что проект A больше не использует API из проекта B для связи, а новый проект - проект C, скажем, написанный на другом языке. – AdelaN