小编Apr*_*che的帖子

如何让工作人员访问一些Django设置?

在Django中,设置存储在settings.py文件中.该文件是代码的一部分,并进入存储库.只有开发人员处理此文件.管理员处理模型,数据库中的数据.这是非开发人员编辑的数据,以及网站访问者在模板中看到的数据.

问题是,我们的网站和许多其他网站都有许多设置选项,应该由非开发人员编辑.我们讨论的是独立的站点范围常量,它们在数据库中确实没有位置.将它们放入数据库将导致许多无意义的查询.缓存可以缓解这种情况,但是在设置settings.py文件中的单行处理时,这似乎不必要地复杂.

我确实注意到了这个dbsettings应用程序,但它已经过时且没有维护.我还注意到django电子商务应用程序Satchmo包含了这个dbsettings应用程序的用例特定分支.我们可以在我们的站点中构建类似的东西,一个将一些设置作为键/值对存储在一个数据库表中的应用程序,但它看起来真的是错误的方法.为什么在不属于那里的数据库中添加一些内容只是为了让非开发人员更容易编辑?

我们在Django网站上有一个站点范围的设置列表,我们希望非开发人员管理员可以编辑这些设置.解决这个问题的最佳方式是什么?

python django settings

9
推荐指数
2
解决办法
2178
查看次数

如何减少django模型中的查询has_relation方法?

这里有两个Django模型示例.特别注意has_pet方法.

class Person(models.Model):
    name = models.CharField(max_length=255)

    def has_pet(self):
        return bool(self.pets.all().only('id'))

class Pet(models.Model):
    name = models.CharField(max_length=255)
    owner = models.ForeignKey(Person, blank=True, null=True, related_name="pets")
Run Code Online (Sandbox Code Playgroud)

这里的问题是has_pet方法总是生成一个查询.如果你做这样的事情.

p = Person.objects.get(id=1)
if p.has_pet():
    ...
Run Code Online (Sandbox Code Playgroud)

那么你实际上会做一个额外的查询,只是为了检查一个人是否有宠物.如果你需要检查多个人,这是一个大问题.如果在这样的模板中使用它,它也会生成查询.

{% for person in persons %}
    {% if person.has_pet %}
        {{ person.name }} owns a pet
    {% else %}
        {{ person.name }} is petless
    {% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

此示例实际上将在呈现模板时为人员查询集中的每个人执行额外查询.

有没有办法只用一个查询来执行此操作,或者至少每个人执行少于一个额外查询?也许还有另一种设计方法可以完全避免这个问题.

我想到向Person添加一个BooleanField,并在保存或删除宠物时更新该字段.这真的是正确的方法吗?

此外,我已经正确地进行了memcached设置,因此只有在结果尚未缓存的情况下才会发生这些查询.我想首先删除查询以进行更大程度的优化.

python django django-models django-queryset

7
推荐指数
1
解决办法
601
查看次数

在南方数据迁移中使用django-taggit?

我有一个使用django-taggit的模型.我想执行一个向此模型添加标记的南数据迁移.但是,在南迁移中无法使用.tags管理器,您必须使用南方orm ['myapp.MyModel'] API而不是普通的Django orm.

执行这样的操作会抛出异常,因为post.tags为None.

post = orm['blog.Post'].objects.latest()
post.tags.add('programming')
Run Code Online (Sandbox Code Playgroud)

是否可以在南数据迁移中使用taggit创建和应用标签?如果是这样,怎么样?

django django-south django-taggit

7
推荐指数
1
解决办法
734
查看次数

Django中基于日期的通用视图的分页

我有一个非常简单的问题.我想在Django网站上制作一些基于日期的通用视图,但我也想对它们进行分页.根据文档,object_list视图具有page和paginate_by参数,但archive_month视图没有.这样做的"正确"方法是什么?

python django pagination

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

如何使用中央存储库管理备份和监控Git?

我现在正在使用Git的团队,我们有一个非常好的工作流程.我们有一个中央存储库,有两个分支,dev和master.我们创建了本地分支机构来处理各个任务.当他们准备好时我们合并到dev.然后我们在事情准备就绪时合并为主人,并标记我们的所有版本.如果多个开发人员需要更直接地合作完成任务,我们可以为他们创建另一个可能是临时的远程分支来共享补丁.这对我们来说非常好,但它给我们留下了两个问题.

一个问题是备份问题.当然,大部分代码库都是备份的.每个具有存储库克隆的计算机都具有大部分代码.但是,有人在一天中写入的代码在合并到dev和push之前不会备份.如果他们正在处理的任务非常重要,那么他们可能需要几天时间才能完成任何合并和推动.我们如何确保将正在进行的工作代码备份到中央安全位置?只需使用Git外部的一些备份解决方案?

第二个问题是监控员工进度的问题.经理希望能够看到开发人员每天编写的代码.如果在没有推出任何东西的情况下购买一天,看起来你整天都没有做任何事情.我们需要某种方式来每天展示我们的工作,这不会迫使我们提交和推送尚未准备好提交,合并和推送的代码.

我们考虑的一个解决方案是在我们制作的每个本地分支的中央仓库上创建一个远程分支.这可能会有效,但即使我们经常删除旧的未使用的分支,它也会是一个混乱的混乱.管理所有这些也需要做很多额外的工作.

如何在不中断Git工作流程的情况下满足这些业务需求?

git collaboration version-control backup workflow

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

如何在 Django Admin 中只折叠一个字段?

django admin 允许您指定 fieldsets。您可以正确构建一个将不同字段组合在一起的元组。您还可以为某些字段组指定类。其中一个类是collapse,它将字段隐藏在可折叠区域下。这有利于隐藏很少使用或高级的字段以保持 UI 干净。

但是,我有一种情况,我只想在许多不同的应用程序中隐藏一个单独的字段。为了在每个 admin.py 文件中创建完整的字段集规范,只需将一个字段放入折叠区域,这将需要大量输入。它还造成了维护困难的情况,因为我每次编辑关联模型时都必须编辑字段集。

我可以使用exclude 选项轻松地完全排除该字段。我想要类似的东西来崩溃。这可能吗?

python django django-admin

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

如何在django管理员索引中添加新条目?

我正在处理Django项目,并且已经使用文档中描述get_urls覆盖方法创建了一些自定义管理视图。它运作完美。只有一个问题。除非您已经知道URL,否则无法进入此自定义管理员视图。

我已经知道有一些方法可以在管理员中的某处添加到该视图的链接,但是没有一种令人满意。我希望所有模型管理员都可以在模型列表中看到指向自定义视图的链接。我只是不希望它旁边有+ add或+ change链接,因为它不是模型。

我可以覆盖admin_site或模板,但这不好。它将自定义置于项目级别而不是应用程序级别。它还只会将链接放在/ admin /页面上,而不放在/ admin / myapp /页面上。

我也可以通过覆盖app_index.html模板轻松地将链接添加到其他位置,但这并不是一个方便或直观的查找位置。

我想到的另一个解决方案是创建一个空白模型并为其注册一个空白管理员。然后窃取该模型的url模式,以便单击其条目进入我的自定义视图,而不是空白的添加/更改视图。那行得通,但这是一个令人难以置信的丑陋的骇客。

这是我要实现的目标的图片。

自定义Django管理员列表

python django django-admin

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

在Django App中Ping FeedBurner

我有一个django网站,有些Feed是通过FeedBurner发布的.每当我保存特定模型的实例时,我想ping FeedBurner.FeedBurner的网站说要使用XML-RPC ping机制,但我找不到很多关于如何实现它的文档.

在django/Python中执行XML-RPC ping的最简单方法是什么?

python django xml-rpc

4
推荐指数
1
解决办法
979
查看次数

匹配除mod_rewrite中的一个子域以外的所有子域

好吧,所以我正在做一个mod_rewrite,而我正处于需要匹配除了一个子域之外的任何子域的情况.它开始看起来像这样.

RewriteCond %{HTTP_HOST} ^([^\.]+)\.example\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)

这样匹配并捕获单个子域,没有句点.但是,让我说我不想匹配名为'dog'的子域.我尝试用这样的负面预测做到这一点.

RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+)\.example\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)

这在大多数情况下都有效.dog.example.com不再匹配,这很好.但是,doggies.example.com也不再匹配.这是不好的.

我能够通过使用负向前瞻和负面后视这样来解决这个问题.

RewriteCond %{HTTP_HOST} ^((?!dog)[^\.]+(?<!dog))\.example\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)

这有效.据我所知,它完美无缺.问题是,我无法相信这是实现这场比赛的最佳方式.前瞻后视?真?实现等效表达的"正确"方法是什么?

regex apache mod-rewrite

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

如何在django-sphinx下自动重建Sphinx索引?

我只是设置了django-sphinx,它工作得很漂亮.我现在能够搜索我的模型并获得惊人的结果.一个问题是我必须使用indexer命令手动构建索引.这意味着每次添加新内容时,我都必须手动命中命令行来重建搜索索引.这是不可接受的.

我可以创建一个自动运行索引器命令的cron作业,但这远非最佳.在cron再次运行之前,不会对新数据编制索引.此外,索引器将大多数时间不必要地运行,因为我的站点没有经常添加数据.

如何设置它,以便只要在可搜索的django模型中添加或修改数据,Sphinx索引就会自动重建?

python django search sphinx django-sphinx

2
推荐指数
1
解决办法
2682
查看次数