Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在两个项目中使用一个django应用程序(带有一个db)?(将我的应用程序用作服务)_Python_Django_Soa - Fatal编程技术网

Python 如何在两个项目中使用一个django应用程序(带有一个db)?(将我的应用程序用作服务)

Python 如何在两个项目中使用一个django应用程序(带有一个db)?(将我的应用程序用作服务),python,django,soa,Python,Django,Soa,问题-> 假设您有一个名为“blog”的django应用程序,您想在“www.cool.com”和“www.hot.com”中使用它,这实际上是两个不同的django项目(当然“blog”应用程序除外) 我希望这个“博客”应用程序像一个服务,可以被任何第三方网站使用 你会怎么做? 我想到的解决方案之一是在另一个第三个域上托管这个“博客”应用程序,并通过API处理读/写操作,但这会变得相当麻烦,我想也许有更好的方法。也许我错过了什么。多谢各位 如果我错了,有人会纠正我,但我想我正在尝试使用我的Dj

问题->
假设您有一个名为“blog”的django应用程序,您想在“www.cool.com”和“www.hot.com”中使用它,这实际上是两个不同的django项目(当然“blog”应用程序除外)

我希望这个“博客”应用程序像一个服务,可以被任何第三方网站使用

你会怎么做?

我想到的解决方案之一是在另一个第三个域上托管这个“博客”应用程序,并通过API处理读/写操作,但这会变得相当麻烦,我想也许有更好的方法。也许我错过了什么。多谢各位

如果我错了,有人会纠正我,但我想我正在尝试使用我的Django应用程序作为服务。

再详细一点,因为我觉得我可能不太清楚,
以下评论摘录->
我希望django应用程序的代码库保持在一个位置,但它应该可以被“n”个项目使用。

我可以从云端将django应用程序添加到我的django settings.py的已安装应用程序中吗

我认为最简单的解决方案是:
+比如说,PostgreSQL DB允许跨域访问。
为你的博客应用创建路由器,并使用你想要的任何数据库

UPD:

某处

# class for routing db operations for  some blog myapp
class MyAppRouter(object):
    """A router to control all database operations on models in
    the myapp application"""

    def db_for_read(self, model, **hints):
        "Point all operations on myapp models to 'other'"
        if model._meta.app_label == 'myapp':
            return 'other'
        return None

    def db_for_write(self, model, **hints):
        "Point all operations on myapp models to 'other'"
        if model._meta.app_label == 'myapp':
            return 'other'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        "Allow any relation if a model in myapp is involved"
        if obj1._meta.app_label == 'myapp' or obj2._meta.app_label == 'myapp':
            return True
        return None

    def allow_syncdb(self, db, model):
        "Make sure the myapp app only appears on the 'other' db"
        if db == 'other':
            return model._meta.app_label == 'myapp'
        elif model._meta.app_label == 'myapp':
            return False
        return None
在settings.py中

DATABASES = {
'default': {
     ...
     # Project DB
           }
# Blog DB
'blog': { 
    'ENGINE': 'django.contrib.gis.db.backends.postgis',
    'NAME': 'test',
    'USER': 'postgres',
    'PASSWORD': 'admin',
    'HOST': '111.111.111.111',
    'PORT': '5432',
    }
}

...
DATABASE_ROUTERS = ['path.to.MyAppRouter', 'path.to.MasterSlaveRouter']

这个问题很难理解

两个django站点共享一个公共应用程序是微不足道的。一直都是这样

你只是在两个站点之间共享应用程序代码

使用subversion保留
博客
应用程序的主副本

签出两个站点的工作副本

我希望这个“博客”应用程序像一个服务,可以被任何第三方网站使用。 我想我要做的就是把我的Django应用程序作为一种服务来使用

这也是微不足道的。用于围绕博客应用程序创建RESTful web服务

通过API处理读/写操作,但这会变得相当麻烦


不是真的。RESTful web服务非常简单。使用
httplib
作为RESTful web服务的客户端。

我不能说我理解你的问题。听起来你有两个网站,其中一个是“web服务网站”。问题是什么?你是说博客将成为你数据库的门户吗?你只是想重复使用这个模型?我想用这个“博客”应用程序来访问“n”个站点,所以我想把它作为一种服务发布出来,任何第三方站点都可以使用,唯一不同的是后台数据库?让我这样说吧,有一些私有应用程序和数据,它们属于“cool.com”和“hot.com”,还有这个公共应用程序“博客”应用程序,我想把它作为一种服务推出,但我可以与这些“cool.com”和“hot.com”进行后端集成“django项目问题不在于数据库,而在于代码本身……对此有什么建议?为什么要使用两个不同的数据库?像往常一样写博客,按照中的建议为其创建路由器。。。就这些@“www.cool.com”的Nix[quote]数据存储在-X db中,“www.hot.com”的数据存储在-Y db中,您希望“blog”应用程序的数据存储在-Z db中[/quote]对不起,我编辑了那个部分,因为我认为它会引起混乱实际上不知道,我在考虑这样的用例:应用程序处于版本控制之下,源代码包含在这两个项目中(因此您可以以标准方式包含已安装的应用程序中的博客应用程序),当某些内容发生更改时,您只需同步它们。也许还有更聪明的方法,但我现在不知道了。)谢谢你的回答,先生,对不起,请原谅我的无知。我真的不知道什么是颠覆,但我猜我可以从一个地方运行博客应用程序,对吗?那么我该如何颠覆它呢?活塞看起来也很棒!“我一定要试试看。”扎克·怀尔德:请去看看颠覆。另外,看看git和mercurial。这就是每个人如何确保在两个站点中正确使用一个应用程序。