小编Rob*_*ing的帖子

大型Django应用程序布局

我是一个开发基于网络的大学门户网站的团队,该门户网站将基于Django.我们仍处于探索阶段,我正在努力寻找将项目/开发环境放在外面的最佳方法.

我最初的想法是将系统开发为Django"app",其中包含用于分离系统不同部分的子应用程序.我打算制作这些"子"应用程序的原因是它们在父应用程序之外没有任何用处,因此单独分发它们几乎没有意义.我们设想门户网站将安装在多个位置(例如,在不同的大学),因此可以将主应用程序放入许多Django项目中进行安装.因此,我们为每个位置的项目都有一个不同的存储库,它实际上只是一个settings.py定义已安装的门户应用程序的文件,以及一个urls.py路由到它的URL.

不过,我已经开始编写一些初始代码了,我遇到了一个问题.一些处理用户身份验证和配置文件的代码似乎没有家.它在概念上不属于门户应用程序,因为它与门户的功能无关.但是,它也不能进入项目存储库 - 因为我会在每个位置的存储库中复制代码.例如,如果我在此代码中发现了一个错误,我将不得不在所有位置的项目文件上手动复制修复程序.

我的修复想法是让所有项目repos成为"主"位置项目的分支,以便我可以从该主程序中提取任何更改.我认为这很麻烦,这意味着我还有一个存储库需要照顾.

我正在寻找一种更好的方法来实现这个项目.任何人都可以推荐一个解决方案或类似的例子,我可以看看?问题似乎是我正在开发一个Django 项目,而不仅仅是一个Django 应用程序.

python django conventions

25
推荐指数
2
解决办法
8463
查看次数

Django App依赖循环

我正在开发一个Django应用程序,它有相当复杂的模型(它模拟大学 - 课程,模块,讲座,学生等)

我已将项目分为应用程序,以使整个事情更有条理(应用程序是课程,学校,人员,模块和时间段).我有一个问题,即一个应用程序中的模型可能依赖于另一个应用程序中的模型 - 所以我必须导入它.然后第二个应用程序依赖于第一个应用程序中的模型,因此有一个循环并且Python会引发错误.

人们如何处理这个问题?我知道应用程序应该相对"独立",但在这样的系统中,例如,使用ContentTypes将学生链接到模块是没有意义的.

有没有人有类似的项目可以评论这个案例?

python django dependencies

24
推荐指数
2
解决办法
6523
查看次数

Django子应用程序和模块结构

我正在开发一个Django应用程序,这是一个需要多个子应用程序来保持整洁的大型系统.因此,我有一个顶级目录,它是一个Django应用程序(因为它有一个空models.py文件),以及多个子目录,它们本身也是应用程序.

我以这种方式放置我的应用程序的原因是因为子应用程序是分开的,但它们永远不会在父应用程序之外自己使用.因此,单独分发它们是没有意义的.

安装我的应用程序时,设置文件必须包含以下内容:

INSTALLED_APPS = (
    ...
    'myapp',
    'myapp.subapp1',
    'myapp.subapp2',
    ...
)
Run Code Online (Sandbox Code Playgroud)

......这显然不是最理想的.这也有要求,所有的子应用程序是由他们的"内部"名称简称(即稍微讨厌的结果subapp1,subapp2等等).例如,如果我想重置subapp1的数据库表,我必须键入:

python manage.py reset subapp1
Run Code Online (Sandbox Code Playgroud)

这很烦人,特别是因为我有一个名为的子应用程序core- 当我的应用程序安装在用户的项目中时,它很可能与另一个应用程序的名称冲突.

我是完全错误地做了这个,还是在那里迫使这些"内部"应用程序以他们的全名引用?

python django django-apps

18
推荐指数
1
解决办法
6104
查看次数

'admin'不是Django 1.4中的注册命名空间

我正在尝试将相当大的Django项目升级到新发布的Django 1.4,我在运行时遇到了一些问题python manage.py test.

在Django 1.3中传递的大量内部测试现在都失败了,真正奇怪的消息似乎无法解决.看起来最多的是:

NoReverseMatch: u'admin' is not a registered namespace
Run Code Online (Sandbox Code Playgroud)

这是django.contrib.auth针对密码更改的测试而提出的(其中一个是test_password_change_fails_with_mismatched_passwords (django.contrib.auth.tests.views.ChangePasswordTest).奇怪的是,命名空间已正确注册,应用程序运行正常.我以"新"方式导入管理员:

url(r'^admin/', include(admin.site.urls)),
Run Code Online (Sandbox Code Playgroud)

特别是当我谷歌这个错误时,我所能找到的是使用旧方案导入管理URL的人,并且根本不涉及这个问题.

我已经尝试INSTALLED_APPS逐个删除应用程序,但auth测试根本无法通过.此外,当我从中加载Python解释器python manage.py shell并执行reverse('admin:index')URL解析为/admin/没有错误.我已经广泛阅读了这段代码,但却无法看到它可能会落空的地方.

正如我之前提到的,这不是唯一发生的错误.即使在我的文件中定义,我也AttributeError: AUTH_PROFILE_MODULEtest_site_profile_not_available (django.contrib.auth.tests.models.ProfileTestCase)测试AUTH_PROFILE_MODULE中获益settings.py.Django自己的测试怎么会像这样失败?

python django django-1.4

17
推荐指数
3
解决办法
1万
查看次数

Django:通过多对多字段订购模型

我正在编写一个Django应用程序,它有一个People模型,我遇到了障碍.我正在为使用多对多关系的人分配角色对象 - 其中角色具有名称和权重.我希望按照他们最重要的角色来命令我的人员名单.如果我做People.objects.order_by(' - roles__weight'),那么当人们分配了多个角色时,我会得到重复.

我最初的想法是添加一个称为最重角色权重的非规范化字段- 并按此排序.每次添加或从用户删除新角色时,都可以更新此信息.然而,事实证明,有没有办法来执行自定义操作每次ManyToManyField是在Django(更新时间还没有,反正).

所以,我认为我可以完全超越并编写一个自定义字段,描述符和管理器来处理这个问题 - 但是当为ManyToManyField动态创建ManyRelatedManager时,这似乎非常困难.

我一直试图想出一些聪明的SQL,可以为我做这个 - 我敢肯定它可能有一个子查询(或几个),但我担心它不兼容将所有的数据库后端Django支持.

有没有人之前做过这个 - 或者有任何想法如何实现它?

sql django database-design django-models

12
推荐指数
2
解决办法
8456
查看次数

AJAX与Django(或任何Web框架)的"最佳实践"是什么?

我正在Django开发一个问题跟踪应用程序,主要用于学习练习,也适用于我自己的项目 - 我正在研究使用一些AJAX来增强可用性.例如,允许用户"加注"特定问题,这会将其添加到监视列表中.这是在很多站点中实现的,并且通常是AJAX - 因为用户正在查看的URL在单击星标时不需要更改.

现在,我想知道从我的star_unstar观点返回什么样的响应- 检测是否通过AJAX发出请求.

目前,如果请求是一个AJAX请求,它只返回星号所需的HTML部分,因此我可以替换星号父DIV中的HTML,以便星号显示为"on"或"off",取决于用户的操作.

但是,我更愿意返回某种JSON对象,因为它看起来更"合适",我想.这个方法的问题是javascript必须修改星形图像的src属性,href它上面和链接标题,这对于这样一个简单的功能似乎很多工作.我也在考虑将来的在线评论,但我想了解在开始编写大量JS之前应该如何"完成".

在实现这样的功能时,普遍的共识是什么,不仅仅是Django,还有所有以类似方式运行的框架?

django ajax

10
推荐指数
2
解决办法
1391
查看次数

使用Git开发Django项目

我想知道是否有人在一个小团队(我的案例中有3个)中使用Git源代码控制管理工作Django项目.

该项目托管在开发服务器上,这就是我遇到这样一个问题的原因.开发人员无法查看他们的代码是否有效,直到他们将更改提交到本地存储库,然后将这些更改推送到服务器.然而,即便如此,git似乎并没有更新服务器上保存存储库的目录中的文件 - 可能是因为它只存储更改以节省空间.

在处理这个项目时,我们开始踩到彼此的脚趾,因此需要某种版本控制 - 但我无法找到解决方案.

如果有人克服了类似的问题,我很想知道如何做到这一点.

git django

8
推荐指数
1
解决办法
3656
查看次数

扭曲:创建一个ThreadPool然后守护进程导致无法提供信息的挂起

我正在开发一个Twisted网络应用程序,其中一部分由一个用Django编写的Web界面组成.

我希望使用Twisted的WSGI服务器来托管Web界面,并且我已经编写了一个工作"tap"插件来允许我使用twistd.

当使用-n标志运行服务器时(不要守护进程)一切正常,但是当删除此标志时,服务器根本不响应请求,并且没有记录消息(尽管服务器仍在运行).

Twisted的Trac上有一个错误,似乎完全描述了问题,我的插件恰好是基于票证中引用代码.

不幸的是,这个问题还没有解决 - 而且它是在一年前提出的.

我试图创建一个ThreadPoolService类,它在被调用时扩展Service并启动给定:ThreadPoolstartService

class ThreadPoolService(service.Service):
    def __init__(self, pool):
        self.pool = pool

    def startService(self):
        super(ThreadPoolService, self).startService()
        self.pool.start()

    def stopService(self):
        super(ThreadPoolService, self).stopService()
        self.pool.stop()
Run Code Online (Sandbox Code Playgroud)

但是,Twisted似乎根本没有调用该startService方法.我认为问题在于,使用"tap"插件,ServiceMaker只能返回一个要启动的服务 - 并且属于同一应用程序的任何其他服务都不会启动.显然,我正在返回一个TCPServer包含WSGI根的服务.

在这一点上,我有点像砖墙.有没有人对如何解决这个问题有任何想法?

python django wsgi twisted threadpool

5
推荐指数
1
解决办法
1647
查看次数