小编Phi*_*ord的帖子

我的PostGIS数据库看起来不错,但GeoDjango认为不是......为什么?

我正在尝试设置一个GeoDjango应用程序来测试我遇到的早期问题.我已经建立了一个postgresql数据库,创建了一个新的Django项目和应用程序,但是当我尝试时./manage.py syncdb我得到了这个:

django.core.exceptions.ImproperlyConfigured:无法确定数据库"django_geotest"的PostGIS版本.GeoDjango至少需要PostGIS 1.3版.是否从空间数据库模板创建了数据库?

我不明白,因为我之前已经完成了GeoDjango的所有安装要求,并django_geotest通过这样做创建了这个数据库:

$ createdb -T template_postgis django_geotest
Run Code Online (Sandbox Code Playgroud)

看起来数据库设置正确:

django_geotest=# SELECT PostGIS_full_version();
                                     postgis_full_version                                          
-------------------------------------------------------------------------------------------------------
 POSTGIS="1.5.3" GEOS="3.2.2-CAPI-1.6.2" PROJ="Rel. 4.7.1, 23 September 2009" LIBXML="2.7.3" USE_STATS
(1 row)
Run Code Online (Sandbox Code Playgroud)

描述数据库,我得到这个:

django_geotest=# \d                
             List of relations
 Schema |       Name        | Type  | Owner 
--------+-------------------+-------+-------
 public | geography_columns | view  | phil
 public | geometry_columns  | table | phil
 public | spatial_ref_sys   | table | phil
(3 rows)
Run Code Online (Sandbox Code Playgroud)

所以现在我不知道接下来要尝试什么...我对postgresql及其模板等的了解并不是那么好.有任何想法吗?谢谢.

django postgresql postgis geodjango

11
推荐指数
2
解决办法
4301
查看次数

如何让Django测试用例和Selenium服务器使用相同的数据库?

我有一个Django(v1.4,使用Postgresql)项目,我已经写了一堆工作单元测试.这些使用FactoryBoy生成大部分数据.

我现在开始使用带有Selenium的LiveServerTestCase编写一些集成测试.我刚刚意识到我的测试和实时测试服务器使用不同的数据库.这意味着我的测试中工厂创建的数据不适用于Selenium.

我不确定最好的进步方式.我我可以使用灯具来提供可行的数据,尽管这是一个很难用到工厂而已.

有没有办法可以继续使用工厂来生成适用于我的Selenium测试的数据?我真的希望我的测试和LiveServerTestCase使用相同的数据库.

django selenium integration-testing

11
推荐指数
2
解决办法
2598
查看次数

设置d3图表的y轴以适应最宽的标签?

我用d3画线图,一切正常.但是,我必须在图表区域的左侧留下足够的边距,以适应我认为可能是最宽的y轴文本标签.我想根据最宽的标签调整每个图表的空间.

最初我以为我可以找到最大的y值,创建一个隐藏的文本对象,计算出它的宽度,并在创建图表时将该值用于左边距.有点讨厌,但它让我有价值.

但是,如果最大y值是,例如"1598.538",则最顶部的y轴标签可能是"1500"......即,要窄得多.

所以我想我想找到实际上最顶级标签的宽度.但是我不知道如何在不绘制图表和轴的情况下做到这一点,测量宽度,并再次绘制它.这听起来很讨厌!有一种非讨厌的方法吗?

UPDATE

这是我的代码的一部分,使用Lars的建议,只是为了显示它适合的位置:

// I did have
// `.attr("transform", "translate(" + margin.left + "," + margin.top ")")`
// on the end of this line, but I've now moved that to the bottom.
var g = svg.select("g");

// Add line paths.
g.selectAll(".line").data(data)
    .enter()
    .append("path")
    .attr("d", line);

// Update the previously-created axes.
g.select(".axis-x")
    .attr("transform", "translate(0," + yScale.range()[0] + ")"))
    .call(xAxis);
g.select(".axis-y")
    .call(yAxis);

// Lars's suggestion for finding the maximum width of a y-axis label:
var maxw = 0;
d3.select(this).select('.axis-y').selectAll('text').each(function(){ …
Run Code Online (Sandbox Code Playgroud)

javascript label linechart d3.js

10
推荐指数
1
解决办法
3480
查看次数

d3条形图是颠倒的

我在d3中绘制了一个简单的条形图,带有竖条:http://jsfiddle.net/philgyford/LjxaV/2/

然而,它正在绘制条形图,基线位于图表的顶部.

我已经读过要反转它,从底部绘制,我应该改变range()y轴.所以,改变这个:

    .range([0, chart.style('height')]);
Run Code Online (Sandbox Code Playgroud)

对此:

    .range([chart.style('height'), 0]);
Run Code Online (Sandbox Code Playgroud)

然而,看起来它正在绘制图表的反转 - 在每个条形图上方的空间中绘制,并使条形图本身(从底部绘制)保持透明.我究竟做错了什么?

javascript d3.js

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

为什么`source/home/vagrant/.bashrc`无法在Vagrant shell配置脚本中运行?

遇到了Vagrant使用的shell配置脚本的问题,因为它没有执行source /home/vagrant/.bashrc.我把问题减少到了这个......

在我的VM中,我有一个文件/home/vagrant/testfile包含:

echo "In testfile"
Run Code Online (Sandbox Code Playgroud)

最后/home/vagrant/.bashrc我有这个:

echo "In .bashrc"
Run Code Online (Sandbox Code Playgroud)

这两个文件都归vagrant用户所有.

在我的一个Vagrant配置shell脚本中,我有:

echo "Hello"
source /home/vagrant/testfile
source /home/vagrant/.bashrc
echo "Goodbye"
Run Code Online (Sandbox Code Playgroud)

跑步vagrant provision给出了这个:

Hello
In testfile
Goodbye
Run Code Online (Sandbox Code Playgroud)

当我这样做vagrant ssh然后/home/vagrant/.bashrc像往常一样运行,我自动看到:

In .bashrc
Run Code Online (Sandbox Code Playgroud)

那么为什么source /home/vagrant/.bashrc在我的配置脚本中没有效果呢?

shell vagrant

9
推荐指数
1
解决办法
2247
查看次数

如何在Django 1.4中存储一个天真的日期时间

我有一个天真的日期和时间,格式为'2012-05-19 19:13:00',需要使用Django 1.4及其时区感知功能存储它.

虽然无法知道日期最初的时区,但将它存储为UTC似乎是有意义的.

但是,使用pytz等,我不知道如何将没有时区的日期转换为UTC日期时间.

python django pytz

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

使用freezegun,为什么pytz.utc和utcnow()输出不同的日期时间?

我很困惑为什么用冻结枪冻结时间的函数根据是否datetime.datetime.utcnow()被调用输出不同的UTC时间,或者datetime.datetime.now(pytz.utc).我不是说它坏了,只是因为我不明白为什么,而且想知道!

例如,使用此功能:

@freeze_time("2012-01-14 03:21:34", tz_offset=-4)
def test():
    print("utcnow(): %s" % datetime.datetime.utcnow())
    print("pytz.utc: %s" % datetime.datetime.now(pytz.utc))
Run Code Online (Sandbox Code Playgroud)

输出是:

utcnow(): 2012-01-14 03:21:34
pytz.utc: 2012-01-13 23:21:34+00:00
Run Code Online (Sandbox Code Playgroud)

我想第一个是天真的约会时间,但为什么它们的时间不同?

(最终为什么我想知道:如果我在我的测试中使用freezegun,并且我在我的代码中使用pytz生成时间进行测试,我想知道它的"正确"行为应该是什么.)

python datetime pytz freezegun

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

如何删除 Django 内联表单集中“额外”表单上的“删除”复选框

我在 Django 中使用内联表单集,并且对于每个显示一个“额外”表单的项目,用于添加另一个对象。

现有对象的表单具有“删除”复选框,用于删除该对象,这是有道理的。

但“额外”表单也有这些“删除”复选框......这没有任何意义,因为没有任何东西可以删除。Django 管理中的内联表单不会为“额外”表单显示这些“删除”复选框。

如何删除“额外”内联表单上的这些复选框?

我的模板的内联表单集部分是这样的(GitHub 上的简化完整版本):

{% for bookimage_form in form.forms %}
  {% for hidden_field in bookimage_form.hidden_fields %}
    {{ hidden_field.errors }}
  {% endfor %}

  {{ bookimage_form.as_table }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这是似乎多余的“删除”复选框:

示例截图

django inline-formset

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

从 Dockerfile 构建并获取“由于公钥不可用,无法验证以下签名:NO_PUBKEY”

我正在尝试使用以下启动的 Dockerfile 构建 PHP 5.3/Apache 供本地使用:

FROM php:5.3-apache

RUN apt-get update && \
    apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libmcrypt-dev \
    libpng-dev
Run Code Online (Sandbox Code Playgroud)

但是当“阅读包列表”时我得到:

W: GPG error: http://security.debian.org jessie/updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 9D6D8F6BC857C906 NO_PUBKEY AA8E81B4331F7F50
W: GPG error: http://http.debian.net jessie-updates InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7638D0442B90D010
W: GPG error: http://http.debian.net jessie Release: The following signatures couldn't be …
Run Code Online (Sandbox Code Playgroud)

debian docker

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

显示来自Django管理命令的任务进度

我有一些Django管理命令,这些命令调用其他类中的方法以从API中获取数据。这些任务可能要花很长时间才能完成,我想以简洁的方式在控制台中显示进度。

我可以使用print()类似这样的方法来输出像“ Fetched 22 of 3000”这样的一行,该行覆盖自身:

print('Fetched %d of %d' % (n, total) + ' '*30, end='\r')
Run Code Online (Sandbox Code Playgroud)

但是使用print()似乎有点令人讨厌,并且在运行测试时它会输出到控制台。因此,使用日志记录似乎更好,但是我看不到使用该方法在控制台中显示单个不断更新的“进度”行的方法。

有没有很好的方法可以做到这一点?

python django django-logging

6
推荐指数
1
解决办法
948
查看次数