小编Chr*_*lor的帖子

如何分析Python脚本?

项目欧拉和其他编码竞赛通常有最长的运行时间或人们吹嘘他们的特定解决方案运行的速度.使用python,有时候这些方法有点像kludgey - 即添加时间码__main__.

分析python程序运行多长时间的好方法是什么?

python performance profiling time-complexity

1203
推荐指数
28
解决办法
47万
查看次数

在bash脚本中使用source时出现'source:not found'错误

我正在尝试编写(我认为会是)一个简单的bash脚本,它将:

  1. 运行virtualenv以1美元创建一个新环境
  2. 激活虚拟环境
  3. 做更多的东西(安装django,将django-admin.py添加到virtualenv的路径等)

第1步工作得很好,但我似乎无法激活virtualenv.对于那些不熟悉virtualenv的人,它会创建一个activate激活虚拟环境的文件.在CLI中,您可以使用它运行它source

source $env_name/bin/activate
Run Code Online (Sandbox Code Playgroud)

其中$ env_name显然是安装虚拟环境的目录的名称.

在我的脚本中,在创建虚拟环境之后,我将激活脚本的路径存储如下:

activate="`pwd`/$ENV_NAME/bin/activate"
Run Code Online (Sandbox Code Playgroud)

但是当我打电话时source "$activate",我得到了这个:

/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Run Code Online (Sandbox Code Playgroud)

我知道它$activate包含激活脚本的正确路径,实际上我甚至在调用之前测试文件是否在那里source.但source它本身似乎无法找到它.我也尝试在CLI中手动运行所有步骤,其中一切正常.

在我的研究中,我发现了这个脚本,它与我想要的类似,但也做了许多其他我不需要的事情,比如将所有虚拟环境存储在〜/ .virtualenv目录中(或者其他任何内容) $ WORKON_HOME).但在我看来,他正在创造通往我的道路activate,并source "$activate"以与我相同的方式打电话.

这是完整的脚本:

#!/bin/sh

PYTHON_PATH=~/bin/python-2.6.1/bin/python

if [ $# = 1 ]
then
    ENV_NAME="$1"
    virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
    activate="`pwd`/$ENV_NAME/bin/activate"

    if [ ! -f "$activate" ]
    then
        echo "ERROR: activate not found at $activate"
        return 1
    fi

    source "$activate"
else
    echo 'Usage: …
Run Code Online (Sandbox Code Playgroud)

bash virtualenv

150
推荐指数
3
解决办法
13万
查看次数

Django - 如何在模板'for'循环中进行元组解包

在我的views.py中,我正在构建一个包含两元组的列表,其中元组中的第二项是另一个列表,如下所示:

[ Product_Type_1, [ product_1, product_2 ],
  Product_Type_2, [ product_3, product_4 ]]
Run Code Online (Sandbox Code Playgroud)

在普通的旧Python中,我可以像这样迭代列表:

for product_type, products in list:
    print product_type
    for product in products:
        print product
Run Code Online (Sandbox Code Playgroud)

我似乎无法在我的Django模板中做同样的事情:

{% for product_type, products in product_list %}
    print product_type
    {% for product in products %}
        print product
    {% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我从Django得到这个错误:

渲染时捕获异常:zip参数#2必须支持迭代

当然,模板中有一些HTML标记,而不是print语句.Django模板语言不支持元组解包吗?或者我是以错误的方式来做这件事的?我要做的就是显示一个简单的对象层次结构 - 有几种产品类型,每种都有几种产品(在models.py中,Product有Product_type的外键,简单的一对多关系).

显然,我对Django很新,所以任何输入都会受到赞赏.

python django templates tuples iterable-unpacking

56
推荐指数
3
解决办法
6万
查看次数

Django - 指定Django管理员应该使用哪个模型管理器

我为Django模型创建了一个自定义管理器,它返回一个包含objects.all()子集的QuerySet.我需要这是模型的默认经理,因为我还创建自定义的标签,这将可以从任何模型(由自变量指定)的内容,并且需要使用默认经理指定的模型.一切正常,除了 - Django Admin也使用此特定模型的默认管理器,这意味着并非所有模型实例都出现在管理员中.

Django文档没有帮助:

如果您使用自定义管理器对象,请注意第一个管理器Django遇到(按照它们在模型中定义的顺序)具有特殊状态.Django将类中定义的第一个Manager解释为"默认"管理器,Django的几个部分(尽管不是管理应用程序)将专门为该模型使用该Manager. (Django Managers文档)

管理员不应该使用默认的管理器,但它似乎在我的情况下.请注意,我还明确添加了默认管理器objects:

subset = CustomManager() # the default manager
objects = models.Manager() # the one I want admin to use
Run Code Online (Sandbox Code Playgroud)

如何指定管理员应使用哪个Manager?

python django

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

在django Web应用程序中,如何为用户提供自己的子域?

我正在使用Django和Pinax开始一个新的Web应用程序项目.我希望能够为我的用户提供像Wordpress和其他网站这样的独特域名:username.wordpress.com.我不知道如何使用Django来处理这个问题,因为url解析逻辑(在urls.py中)以域名后的url开头.

更具体地说,将有多组用户,每组具有唯一的名称.不确定这有什么不同,但我想我应该提一下.

有没有办法我可以操纵http请求,以便URL看起来像Django,好像网址是这样的www.domain.com/groupname,但仍然在浏览器地址栏中显示为groupname.domain.com

django subdomain pinax

35
推荐指数
1
解决办法
3509
查看次数

Django-Compressor抛出UncompressableFileError

我正在使用django-compressor和django-staticfiles(外部版本,我在Django 1.2上).

当我尝试加载我的网站时,我收到一个错误:

TemplateSyntaxError: Caught UncompressableFileError while rendering: 'css/facebox.css' isn't accesible via COMPRESS_URL ('/static/') and can't be compressed
Run Code Online (Sandbox Code Playgroud)

我已经验证COMPRESS_URL等于STATIC_URL,并且该文件实际上可以通过该URL访问.

看看django-compressor代码,我发现抛出异常的地方:

 def get_basename(self, url):
        try:
            base_url = self.storage.base_url
        except AttributeError:
            base_url = settings.COMPRESS_URL
        # I added the following print statement:
        print "url: %s, base_url: %s" % (url, base_url)
        if not url.startswith(base_url):
            raise UncompressableFileError("'%s' isn't accesible via "
                                          "COMPRESS_URL ('%s') and can't be "
                                          "compressed" % (url, base_url))
Run Code Online (Sandbox Code Playgroud)

{% compress css %}我的模板中的第一个块是这样的:

{% compress css %}
<link …
Run Code Online (Sandbox Code Playgroud)

django django-staticfiles django-compressor

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

Django:如何使用存储的模型实例作为表单选择?

我有一个基本上只是一个字符串的模型(django.db.models.CharField).将存储此模型的多个实例.我如何将这些值用作表单中的选项?

为了说明,该模型可以BlogTopic.我想让用户能够选择一个或多个主题进行订阅.

我开始写一些像:

from mysite.blog.models import BlogTopic

choices = [(topic.id, topic.name) for topic in BlogTopic.objects.all()]

class SubscribeForm(forms.Form):
    topics = forms.ChoiceField(choices=choices)
Run Code Online (Sandbox Code Playgroud)

但我不确定何时choices会定义.我假设只在首次导入模块时(即启动Django时).显然这不是一个很好的方法.

这似乎是一个常见的要求,但我似乎找不到任何例子.我怀疑我可能会遗漏一些明显的东西.无论如何,提前感谢您的答案.

python django django-forms

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

Django - 计算相关模型的子集 - 需要为每个项目注释活动优惠券的数量

我有一个优惠券模型,它有一些字段来定义它是否处于活动状态,以及一个只返回实时优惠券的自定义管理器.优惠券有一个FK到项目.

在对项目的查询中,我试图注释可用的有效优惠券的数量.但是,Count聚合似乎在计算所有优惠券,而不仅仅是活跃优惠券.

# models.py
class LiveCouponManager(models.Manager):
    """
    Returns only coupons which are active, and the current
    date is after the active_date (if specified) but before the valid_until
    date (if specified).
    """
    def get_query_set(self):
        today = datetime.date.today()
        passed_active_date = models.Q(active_date__lte=today) | models.Q(active_date=None)
        not_expired = models.Q(valid_until__gte=today) | models.Q(valid_until=None)
        return super(LiveCouponManager,self).get_query_set().filter(is_active=True).filter(passed_active_date, not_expired)

class Item(models.Model):
    # irrelevant fields

class Coupon(models.Model):
    item = models.ForeignKey(Item)
    is_active = models.BooleanField(default=True)
    active_date = models.DateField(blank=True, null=True)
    valid_until = models.DateField(blank=True, null=True)
    # more fields

    live = LiveCouponManager() # defined first, should …
Run Code Online (Sandbox Code Playgroud)

sql django orm count aggregates

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

Python正则表达式搜索和替换

我不是Python的新手,而是一个有正则表达式的完整新手(在我的待办事项列表中)

我试图使用python re来转换字符串,如

[Hollywood Holt](http://www.hollywoodholt.com)
Run Code Online (Sandbox Code Playgroud)

<a href="http://www.hollywoodholt.com">Hollywood Holt</a>
Run Code Online (Sandbox Code Playgroud)

和一个字符串

*Hello world*
Run Code Online (Sandbox Code Playgroud)

<strong>Hello world</strong>
Run Code Online (Sandbox Code Playgroud)

python regex string markdown

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

Django ModelForms - '实例'没有按预期工作

我有一个模型形式,可以创建一个新模型或编辑一个现有模型 - 这很简单,应该可以工作,但由于某种原因我每次都得到一个新的实例.

场景是这是电子商务订单的第一步.用户必须填写一些描述订单的信息(存储在模型中).我创建模型,保存它,然后重定向到下一个视图,以便用户输入他们的cc信息.我将模型粘贴在会话中,因此我不必在下一个视图中进行数据库查找.第二个(cc信息)视图的模板中有一个链接,允许用户返回第一个视图来编辑他们的订单.

# forms.py

class MyForm(forms.ModelForm):
    class Meta:
        fields = ('field1', 'field2')
        model = MyModel

# views.py

def create_or_update(request):
    if request.method == 'POST':
        form = MyForm(request.POST)
        if form.is_valid():
            m = form.save(commit=False)
            # update some other fields that aren't in the form
            m.field3 = 'blah'
            m.field4 = 'blah'
            m.save()
            request.session['m'] = m
            return HttpResponseRedirect(reverse('enter_cc_info'))
        # invalid form, render template
        ...
    else:
        # check to see if we're coming back to edit an existing model
        # this part works, I …
Run Code Online (Sandbox Code Playgroud)

forms django instance modelform

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