小编jon*_*man的帖子

如何有选择地在Python字符串中转义百分比(%)?

我有以下代码

test = "have it break."
selectiveEscape = "Print percent % in sentence and not %s" % test

print(selectiveEscape)
Run Code Online (Sandbox Code Playgroud)

我想获得输出:

Print percent % in sentence and not have it break.
Run Code Online (Sandbox Code Playgroud)

实际发生了什么:

    selectiveEscape = "Use percent % in sentence and not %s" % test
TypeError: %d format: a number is required, not str
Run Code Online (Sandbox Code Playgroud)

python escaping python-2.7

332
推荐指数
5
解决办法
32万
查看次数

Django-guardian-在哪里分配对象创建的默认权限

我正在启动一个具有复杂权限结构的应用程序,该结构将不可避免地由用户自己管理。我在模型中具有以下权限:

class Meta:
    permissions = (
    ('can_view', 'View project'),
    ('manage_view', 'Can assign View project'),
    ('can_edit', 'Edit project'),
    ('manage_edit', 'Can assign Edit project'),
    ('can_delete', 'Delete project'),
    ('manage_delete', 'Can assign Delete project'),
    ('creator', 'Full access to model features.'),
    )
Run Code Online (Sandbox Code Playgroud)

这些将在Django-guardian的对象级别进行管理,而我正在使用自定义mixins处理所有各种组合和功能。

“创建者”权限分配给对象的初始创建者,他们可以通过基于电子邮件的邀请系统将其他权限分配给用户。

我的问题围绕着选项,这些选项用于分配创建者对对象的创建权限。

到目前为止,我想到的一些方法是:

保存后在视图中分配

newObject.save()
assign('creator', User, newObject)
Run Code Online (Sandbox Code Playgroud)

通常,我更喜欢从我的观点中排除此类事件。

覆盖save()

这种方法的问题是我必须授予对User对象的保存访问权限,这意味着也要覆盖init以设置self.request = request。

后保存信号

我知道我可以利用此信号,但是与前两个信号相比,我还没有尝试实现此信号。

希望这可以对我所处的事物提供足够的洞见。

我很想知道这些方法中最好的是什么,或者如果它们都是坏主意,那么可以选择什么替代实现。

谢谢,

京东

django django-permissions

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

使用基于类的视图查询多个模型

我想解决以下情况.

我有一个侧面板,包含活动用户的信息.为此,需要将UserInfo模型的实例传递给视图.

另外,我想将许多其他模型实例传递给页面(例如,购买,收藏夹等).

我知道通过覆盖get_context_data很容易做到这一点.

def get_context_data(self, **kwargs):
    kwargs['purchases'] = Purchases.objects.get(id=1)
    kwargs['favourites'] = Favourites.objects.get(id=1)
    .... etc
    return super(UploadFileView, self).get_context_data(**kwargs)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是 - 用于此目的的最佳/最合适的CBV是什么?

django django-class-based-views

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

指定模型中的选项和ModelForm中的RadioButton渲染未选中的值"------"

我的目标是能够使用get_FOO_display(),因此据我所知,我必须在模型字段中指定选项.同时我想使用ModelForm作为RadioButton渲染表单.

The problem I am having is that the default value of "------" that would be used in a dropdown select is showing up as one of my RadioButton options.

models.py

class Medication(models.Model):
    YESNO_CHOICES = [(0, 'No'), (1, 'Yes')]
    Allergies = models.BigIntegerField(verbose_name='Allergies:', choices=YESNO_CHOICES)
Run Code Online (Sandbox Code Playgroud)

forms.py

I have tried just specifying a RadioButton widget in the ModelForm.

class mfMedication(ModelForm):
    class Meta:
        model = Medication
        widgets = {
        'Allergies': RadioSelect(),
        }
Run Code Online (Sandbox Code Playgroud)

and also specifying the RadioButton with the CHOICES.

class mfMedication(ModelForm):
    class Meta: …
Run Code Online (Sandbox Code Playgroud)

django django-models django-forms

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

对搜索结果 ListView 进行分页

我正在使用 ListView 显示所有 NewPerson 并按 5 个结果分页。NewPersons 显示在表格中,左侧有一个搜索框。当在 GET 中请求搜索“q”时。为了在搜索时更改查询集,我重写了视图的 get_queryset 方法。

我遇到的问题是,因为我按 5 个结果分页,如果搜索返回超过 5 个结果,它们就会分页;但是,如果单击“下一步”查看第二页,它将返回完整对象列表的第二页,而不是搜索结果的第二页。

所以我想知道如何正确地对我的搜索结果进行分页。谢谢。京东

class PersonListView(ListView):
model = NewPerson
template_name = 'list.html' 
paginate_by = 5

def get_queryset(self):
    """
    Get the list of items for this view. This must be an interable, and may
    be a queryset (in which qs-specific behavior will be enabled).
    """
    if 'q' in self.request.GET:
        q = self.request.GET['q']
        queryset = NewPerson.objects.filter(Q(FirstName__icontains=q) | Q(LastName__icontains=q))
    else:
        if self.queryset is not None:
            queryset = self.queryset
            if …
Run Code Online (Sandbox Code Playgroud)

django django-views

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