小编Rog*_*Liu的帖子

django模板显示项目值或空字符串

我在模板中的代码是这样的:

{% for item in items %}
    {{ item.somefield }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

如果item.somefield不是None,我想显示项值,或者显示空字符串.我不想使用{%if item.somefield%}语句,我想要{{item.somefield或''}}之类的东西(我试过这个但是它不起作用)

python django django-templates

74
推荐指数
2
解决办法
4万
查看次数

django访问模板中的上下文

我的代码是这样的:我自定义我的上下文,并希望在模板中访问我的查询集

class GetStudentQueryHandler(ListView):
    template_name = 'client.html'
    paginate_by = STUDENT_PER_PAGE
    context_object_name = 'studentinfo'

    def get_context_data(self, **kwargs):
        context = super(GetStudentQueryHandler, self).get_context_data(**kwargs)
        context['can_show_distribute'] = self.request.user.has_perm('can_show_distribute_page')
        context['form'] = QueryStudentForm

        return context

    def get_queryset(self):
Run Code Online (Sandbox Code Playgroud)

问题是:如何访问模板中get_queryset方法返回的查询集?我知道我可以访问自定义属性,如studentinfo.can_show_distribute,如何访问查询数据?

django templates django-queryset django-context

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

python基于另一个列表的顺序的属性对对象列表进行排序

大家好,我需要你的python列表排序帮助.

这是事情:

我有两个列表:一个是整数列表,另一个是对象列表,第二个对象列表的属性id也是一个整数,我想根据id属性对对象列表进行排序,在第一个列表中出现了相同id的顺序,这是一个例子:

我得了= [1,2,3,4,5]

和b = [o,p,q,r,s],其中o.id = 2,p.id = 1,q.id = 3,r.id = 5,s.id = 4

并且我希望我的列表b按照其ID出现在列表a中的顺序排序,如下所示:sorted_b = [p,o,q,s,r]

当然,我可以通过使用嵌套循环来实现这一点:

sorted_b = []
for i in a:
    for j in b:
        if j.id == i:
            sorted_b.append(j)
            break
Run Code Online (Sandbox Code Playgroud)

但这是解决问题的经典丑陋和非蟒蛇方式,我想知道是否有一种方法可以用一种相当简洁的方式解决这个问题,比如使用排序方法,但我不知道怎么做.我搜索了我的问题,但找不到确切的答案,所以我需要你的帮助,谢谢:)

python sorting list

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

linux c ++创建具有最大值的信号量

我想创建一个队列来存储我的任务,我希望它是一个缓冲区队列,我想使用信号量来保持线程安全,因为我使用多个线程来执行从任务队列中弹出的任务。 .当队列的大小小于buffer_size(我定义的一个变量)时,add_task线程会将新任务推送到任务队列,当队列满时,任务线程会被阻塞,所以我需要一个信号量最大值等于 buffer_size。

我知道在 windows api 中有 CreateSemophore,我可以在其中设置信号量的最大值:

CreateSemaphore( 
        NULL,           // default security attributes
        MAX_SEM_COUNT,  // initial count
        MAX_SEM_COUNT,  // maximum count
        NULL);          // unnamed semaphore
Run Code Online (Sandbox Code Playgroud)

但是在linux中,我只能得到sem_init函数:

int sem_init (sem_t *sem, int pshared, unsigned int value)
Run Code Online (Sandbox Code Playgroud)

我只能设置初始值,但据说最大值是int的范围..

所以我的问题是如何在 Linux 上的 C++ 中创建一个具有最大值的信号量?

c++ linux multithreading

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