django中间件允许用户配置域锚定到管理员配置的urlconfs。

django-ikari的Python项目详细描述


django锚定的域
是一个应用程序,用于锚定可配置的
urlconfs到用户可配置的子域或域,以便在软件即服务项目中使用


中间件
5个视图
6个url
7个模板
8个许可证



1安装
~~~~~~~~~~~~~~~~
将"ikari/"子目录复制或符号链接到python路径(稍后将提供用于自动安装的"setup.py"
脚本)。模块
内容在"域"模块中可用。

并配置下一节中描述的应用程序设置


2设置
~~~~~~~~~~~~
应用程序将读取以下django设置:
-`domain s\account\u urlconf'-如果已设置,`request.urlconf'将在访问域时设置为
此值。这会中断django调试工具栏并误导反向url解析程序(main
urlconf始终用于反向url解析)。
-`domains\u default\u domain'-默认域名,托管"main"
(非用户)站点。用于防止在帐户站点和主站点上同时使用"domainsmidleware"时重定向到
"domains\u default\u url"。还用于在未设置"域默认URL"时构造"域默认URL"的默认值。
-"域默认URL"-当用户代理
引用具有未知域(未在任何
帐户中注册)的站点时重定向到的URL。未设置时,URL将从
"域默认域"或当前站点对象的域和
"域端口"构造。
-"域IP"-如果设置,则使用值验证"域窗体"中的自定义域。可以将其设置为字符串(与"sockets.gethostbyname()"
"a a.bb.cc.dd"值进行比较),或者,对于更复杂的部署,可以将接收"sockets.gethostbyname()"返回的IP的函数
-"域端口"设置为将在
域站点URL中使用的自定义端口。这样,开发人员就可以成功地使用
域,例如127.0.0.1:8000。
-`domains\u root\u domain'-子域的根域(带或不带前导点的
)。必须设置。
-`domains\u subdomain\u stopwords'-不能用作
子域名的正则表达式元组
([http://docs.python.org/library/re.html])。默认值为"("^www$",)"。使用此选项可阻止用户使用保留域名或将亵渎语用作其域名。表达式使用"re.search"进行测试,而不是
"re.match",因此如果不使用"^"锚定,它们可以匹配域名中的任何位置。
-`domains\u themes'-一个序列(codename,名称)对
表示用户站点的可用主题。
-`domains_use_sso'-将用户重定向到
新创建的站点时使用django sso。如果django sso可用,则默认值为true,否则为false。
-`domains\u usersite\u urlconf'-用户
站点的urlconf模块的名称。这由域实例的"get_absolute_url()
方法使用。

<3个模型
~~~~~~~
应用程序定义一个模型"域"。模型有三个字段:
-`owner',onetoonefield引用
`django.contrib.auth.models.user'模型,其中包含拥有帐户的用户;
-`members',manytomanyfield引用
`django.contrib.auth.models.user'模型,其中包含帐户
成员;
-`domain',站点,可由
用户更改;子域`域是根域,不可由用户编辑;是公共域,布尔值。如果为true(默认值),则domainmiddleware将
允许任何"auth.user"登录到域的帐户;如果为false,则
仅允许属于域成员的用户;
类具有一个类属性"subdomain_root",其中包含子域的根
,如"domains_root_domain"设置说明中所述,
始终带有前导点。不应写入此属性。


model定义"get_绝对URL(path='/',args=(),kwargs={})"
方法,该方法返回到已配置域的链接
(如果"domain"为"none",则返回[http://subdomain.root_domain/path],否则返回
[http://domain/path]。可选路径可以是
绝对路径,或者,如果设置了"settings.domains\u usersite\u urlconf",则可以是用于反向url查找的名称、参数和kwargs。

`添加成员(用户)和
"删除成员(用户)"以分别从
"成员"中添加或删除"用户",并发送"域.信号.添加成员"或
"域.信号.删除成员"和其他"用户"
参数。


3.1权限
==-`是否可以由帐户所有者将"自定义域"启用将"是子域"设置为"真"
。如果域所有者没有这样的
权限,"account_detaul"视图将隐藏
"is_subdomain"的复选框,"on form validation"的"is_subdomain"字段将无条件设置为"true";
-`can_set_public_status'对"is_public"字段的作用相同。


4中间件
~~~~~~~~~~~~~~~~~
`domains.middleware'查看
`request.meta['http_host']',如果它匹配任何"domain"模型
实例:
-将"request.domain"设置为该实例(稍后可由
视图使用,并与"请求"上下文处理器一起在模板中使用);
-立即注销(并重定向到
"域不是成员")任何不是此
帐户所有者或memeber的"auth.models.user",除非"request.domain.is_public"
为true;
-如果设置了"domains_account_urlconf"设置,则将
"request.urlconf"设置为其值,允许单个项目显示主站点和帐户站点的不同url层次结构;

*警告*:设置"request.urlconf"与反向url查找(仍将针对根urlconf进行查找)、
django调试工具栏以及可能的其他操作不匹配。对于
最大可靠性,考虑在
单个数据库上运行两个独立的项目:一个用于"主"站点,另一个用于帐户域,
或同时使用单个urlconf;
-发送信号"domains.signals.domain_request",如果有
接收器返回"httpresponse"的实例,则返回此
响应,而不是实际页面。这可用于
,例如显示错误消息,不允许登录过期的
帐户。


如果当前域与任何现有域实例都不匹配
,并且不是"域默认域",中间件将用户重定向到
`域默认域'。

接受表单并创建新的
帐户后,使用django sso(如果
可用)将用户重定向到该帐户。它没有在默认的"url.py"中配置,应该直接在主站点的urlconf中添加。
-`domains.views.account-detail'-使用
`domains/account-detail.html'模板显示并验证
`domains.form s.domainform'表单,它允许用户
配置帐户的域。在提供的"url.py"中,此视图名为"domains\u account\u detail"。
-"domains.views.claim\account"-如果"domain.owner"为空,
登录的用户可以"cl"aim"帐户,即单击指向此视图的按钮,此视图将向
"settings.managers"发送电子邮件。应使用post
请求调用此视图。在默认的"url.py"中,此视图命名为
"domains\u claim\u account"。
-`domains.views.remove\u member'-对于域所有者,如果设置了
`user\u id'参数,则此文章将从成员列表中删除具有
id的用户。应使用post
请求调用此视图。在默认的"urls.py"视图中,此视图被称为
"domains.views.remove戡member"。


在提供的urlconf"domains.urls"中,有6个url
~~~br/>配置为:根用于"account戡detail"视图。为各种post操作配置了更多的url。这将
包含在子域站点的urlconf中。


在主站点中,应使用创建帐户表单的链接。帐户
由视图"domains.views.create_account"创建。示例
urlconf行是:
(r'^ accounts/create site/$','domains.views.create廑account'),


7个模板
~~~~~~~~~~~
默认设置中的应用程序需要两个模板:
-`account廑detail.html'由"account廑detail"视图调用。
接收两个参数:
-`对象-编辑的域实例,以及要显示的
-`form'-domainform实例。
-`domains/create_account.html'由"create_account"视图调用。
接收一个参数"form",其中包含
domaincreateform的实例。
-`domains/claim_account_subject.txt'和
`domains/claim_account_e mail.txt'-这些模板由
`claim_account'视图用于创建发给经理的电子邮件。此
模板接收三个参数:
-`user'-发送声明的用户,
-`domain'-声明的帐户,
-`site'-`sites.site'当前站点的对象。



8许可证
~~~~~~~~~~~~
此项目根据GPL(gpl-license.txt)许可证获得许可。< BR>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
与ReentrantLock相比,java ReentrantReadWriteLock的性能非常差   java如何使用Maven Android Studio正确导入?   安卓将ADB添加到我的Java PC应用程序   反射Java getDeclaredConstructor失败,来自JUnit的NoSuchMethodException   JSP上siteedit标记库的java替代   JavaSpring环境概要文件和JPA   java中是否有一个类似于StringBuilder的类,唯一的区别是它具有固定的长度?   JavaMathContext。小数点32 vs MathContext。小数点64,使用哪一个,为什么?   java使用spring在Ibm Websphere MQ中实现重试逻辑   java调用SpriteBatch。开始()和结束()   java有一种从文本中读取文本的方法。文件,并将其设置为pom中的maven属性。xml专家?   java让sitemesh使用struts2   Java Swing:在现有窗口上定位对话框   使用带有MemSql的JPA本机查询的java Select json列