栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django在其每个端口分别服务每个应用程序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django在其每个端口分别服务每个应用程序

这是可能的,但您无法将其概念化。Django应用程序是在给定Web服务器上运行的应用程序的一部分。因此,具有一个或多个应用程序的Django项目将作为一台Web服务器的一部分运行。

解决方案是运行Django的多个实例。不确定调试服务器对您的效果如何。您可以通过为每个服务器提供一个参数来告诉它打开端口的位置,从而在每个服务器上运行它,例如:

./manage.py runserver 8000

在127.0.0.1:8000上运行调试服务器,并且

./manage.py runserver 8080

在127.0.0.1:8080上运行另一个调试服务器。通常,这是在单独的外壳中完成的。

您将需要确保其中之一的

INSTALLED_APPS
设置包含其中的设置
'Ebony'
,而另一个具有
'Ivory'
。您还需要找出某种方法来告诉每个实例如何连接到另一个实例(通常通过指定根URL)。


也就是说,稍后您将需要确定两个应用程序是否将共享同一数据库。如果是这样,请确保两台机器都可以使用它。如果不是,请确保每个中的

DATAbaseS
settings.py
都不同。如果您要共享数据库,则Django的sites框架可以帮助您直接在模型中进行操作。


要使两者都在同一个项目中运行,您必须告诉Django要运行哪个项目。我更喜欢使用环境变量。这会将以上

runserver
命令更改为:

SHARD=Ebony ./manage.py runserver 8000

SHARD=Ivory ./manage.py runserver 8080

在您的

settings.py
文件中,可以通过访问此变量
os.environ
。因此,例如,对于
INSTALLED_APPS
每个分片具有不同值的设置,您可以编写类似以下内容的代码:

SHARD = os.environ["SHARD"]# Apps common to all shards go here.LOCAL_APPS = [    commonApp,]# Add apps specific to each shard.if SHARD == "Ebony":    LOCAL_APPS += [        Ebony,    ]elif SHARD == "Ivory":    LOCAL_APPS += [        Ivory,    ]# Add them to the apps that aren't mine.INSTALLED_APPS = (    'django.contrib.auth',    'django.contrib.admin',    # ... omitted for brevity ...    'django_extensions',    'south',    'debug_toolbar',) + LOCAL_APPS

通过

SHARD
在此文件中定义为设置,可以避免所有代码都访问环境变量,并且可以将设置逻辑限制
SHARD
settings.py
,以防以后需要更改它。您的其他Python文件(如果需要)可以通过进行设置
fromdjango.conf.settings import SHARD

也可以使用类似的机制为每个分片

DATAbaseS
设置自己的设置。还有其他任何东西
settings.py

然后在

urls.py
文件的后面,使用它来提取应用程序的URL:

from django.conf.urls import *from django.conf import settingsfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('',    url(r'^$', 'commonApp.views.get_homepage', name='home'),    url(r'^login$', 'django.contrib.auth.views.login', name="login"),    url(r'^logout$', 'django.contrib.auth.views.logout',         {"next_page": "/"}, name="logout"),# Admin    url(r'^admin/doc/', include('django.contrib.admindocs.urls')),    url(r'^admin/', include(admin.site.urls)),)# Auto-add the applications.for app in settings.LOCAL_APPS:    urlpatterns += patterns('',        url(r'^{0}/'.format(app), include(app + '.urls', namespace=app)),    )

这意味着您的应用程序需要它们自己的

urls.py
文件,并且您的应用程序URL名称以您的应用程序名称为前缀。因此,如果应用使用
Ebony
定义URL模式
name="index"
,则可以使用来在模板中获取该URL
{% url 'Ebony:index' %}



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661094.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号