小编Gor*_*ran的帖子

Python将项添加到元组

我有一些object.ID-s,我尝试将其作为元组存储在用户会话中.当我添加第一个它工作,但元组看起来像(u'2',),但当我尝试使用获取mytuple = mytuple + new.id错误添加新的can only concatenate tuple (not "unicode") to tuple.

python tuples python-2.7

141
推荐指数
6
解决办法
31万
查看次数

如果它们在Python中不为空,则连接多个字符串

我有四个字符串,其中任何一个都可以为空.我需要将它们连接成一个字符串,它们之间有空格.如果我使用:

new_string = string1 + ' ' + string2 + ' ' + string3 + ' ' + string4
Run Code Online (Sandbox Code Playgroud)

如果string1为空,结果是新字符串开头的空格.另外,我有三个空格,如果string2string3是空的.

当我不需要时,如何在没有空格的情况下轻松加入它们?

python string join

58
推荐指数
2
解决办法
3万
查看次数

Scrapy在解析时获取请求URL

如何在Scrapy的parse()功能中获取请求URL ?我有很多网址start_urls,其中一些将我的蜘蛛重定向到主页,结果我有一个空项目.所以我需要item['start_url'] = request.url存储这些网址的东西.我正在使用BaseSpider.

scrapy python-2.7 scrapyd

30
推荐指数
4
解决办法
3万
查看次数

如何在模板中迭代SelectField的选项?

我在表单中有一个选择字段,现在我需要在此字段中迭代选项.

{{ form.myselect }} 给我这个:

<select name="myselect" id="id_myselect">
    <option value="" selected="selected">---------</option>
    <option value="2">Item 1</option>
    <option value="3">Item 2</option>
    ...
</select>
Run Code Online (Sandbox Code Playgroud)

现在我需要为选项添加一些属性,因此我需要的是:

<select name="myselect" id="id_myselect">
{% for x in form.myselect %}
    <option value="{{ x.id }}">{{ x.name }}</option>
{% endfor %}
</select>
Run Code Online (Sandbox Code Playgroud)

但是有一个错误:

Caught TypeError while rendering: 'BoundField' object is not iterable
Run Code Online (Sandbox Code Playgroud)

我试过form.myselect.all,form.myselect.option_set但它没有给出任何东西

django django-templates django-forms

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

在django模板中动态获取列表项

我在页面上有一些循环,需要依赖于循环编号的列表项.

我打电话的时候:

{{ mylist.1 }}
{{ mylist.2 }}
{{ mylist.3 }}
Run Code Online (Sandbox Code Playgroud)

一切正常,但我真正需要的是:

{% for x in somenumber|MyCustomRangeTag %}
    {{ mylist.x }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

MyCustomRangeTag给了我Python range()它的工作原理,我已经有了x数字.因此x,取决于循环次数,是1,2,3等.这可能吗?怎么样?

django django-templates

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

Django表单包含未知数量的复选框字段和多个操作

我需要帮助表单看起来像Gmail收件箱并有多个操作.有一个项目列表,我想用表格包装它,在每个项目的前面有复选框的方式.因此,当用户选择几个项目时,他可以单击具有不同操作的两个按钮,例如删除和标记读取.

<form action="">
    {% for item in object_list %}
    <input type="checkbox" id="item.id">
    {{ item.name }}
    {% endfor %}
    <button type="submit" name="delete">Delete</button>
    <button type="submit" name="mark_read">Mark read</button>
</form>
Run Code Online (Sandbox Code Playgroud)

我可以找到哪个提交按钮是用户点击如果使用if 'delete' in request.POST但我不能参考任何形式,因为我认为Django形式不能被定义为未知数量的字段.那么如何在视图中处理所选项目?

if request.method == 'POST':
    form = UnknownForm(request.POST):
    if 'delete' in request.POST:
        'delete selected items'
    if 'mark_read' in erquest.POST:
        'mark selected items as read'
    return HttpResponseRedirect('')
Run Code Online (Sandbox Code Playgroud)

django django-templates django-models django-forms django-views

14
推荐指数
3
解决办法
2万
查看次数

搜索结果网址中的django csrf_token

在搜索结果网址中有csrf.不知道为什么会有,以及如何删除它.搜索效果很好.这是URL

/search/?csrfmiddlewaretoken=675d1340034e094866d15a921407e3fc&q=testing
Run Code Online (Sandbox Code Playgroud)

这是观点:

def search(request):
    query = request.GET.get('q', '')
    rezult = []
    if query:
    qset1 = (
        Q(title__icontains=query) 
    )
    result = Product.objects.filter(qset1).distinct()
    if result.count() == 1:
        return HttpResponseRedirect(result[0].get_absolute_url())
    return render_to_response('search/search.html',{'query': query, 'result': result, },context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

谢谢

django django-forms django-views

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

Python动态创建变量名称

我有一些逻辑需要重复6次.结果存储在变量的末尾,但我需要变量名称为data1,data2,data3等.所以,如果我有:

for x in range(0, 3):
   ...some logic...
   data = result
Run Code Online (Sandbox Code Playgroud)

如何根据循环编号获取名为data1,data2等的数据变量?

python variables

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

Django用条件表达式注释,如何应用distinct()

我有一个有点复杂的查询,我使用带有条件表达式的注释,代码如下:

from django.db.models import Q, F, When, CharField, Value, Case
from django.contrib.auth.models import User


ATT_PREFIX = 'f'

def get_it(mymodel, fields):

    q = Q(modelone__modeltwo__mymodel=mymodel)

    query_set = {
        'aid': F('modelone__id'),
        'name': F('modelfour__name'),
    }

    for f in fields:
        query_set[ATT_PREFIX + str(f.id)] = Case(
            When(Q(modelfive__modelsix=f) &
                 Q(modelfive__user__email=F('email')),
                 then='modelfive__entry'),
            default=Value(''),
            output_field=CharField(),
        )

    return User.objects.filter(q).annotate(**query_set)
Run Code Online (Sandbox Code Playgroud)

收集的属性辅助和名称F()具有预期值。使用条件表达式的第二部分有一个问题:如果 feilds 列表包含 2 个对象,那么Case()当条件满足时我有 2 个用户对象。因此,(aid, name, f17, f18) 我得到了两个对象,而不是一个具有属性的对象:

obj1 attributes (aid, name, f17)
obj2 attributes (aid, name, f18)
Run Code Online (Sandbox Code Playgroud)

Django 1.10,Python3.5

django django-queryset django-views django-annotate

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

Django 在 save() 中获取对象的 ID

我有一些固定的数字,比如说num = 1000现在我有一个字段,它需要是 object.id 和 num 的总和。我需要在 save() 中使用它,如下所示。

def save(self, *args, **kwargs):
    num = 1000
    self.special = self.id + num
    super(MyModel, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

但 self.id 在保存后已知,并且需要名为special的字段。如何获取self.id?

django django-models django-admin django-views

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