小编Dim*_*Dim的帖子

Django is_staff权限装饰者

我试图限制使用2个用户级别的页面访问.超级用户和管理员.超级用户是指定了"is_superuser"的常规Django用户.管理员用户也是普通用户,仅分配了"is_staff"权限.

问题是当我为管理员用户使用这个装饰器时,它没有通过测试:

@permission_required('is_staff')
def my_view(....)
Run Code Online (Sandbox Code Playgroud)

@permission_required('is_staff')对匿名用户返回false.(正确)
@permission_required('is_superuser')仅对超级用户返回true(正确)
@permission_required('is_staff')对于分配了'is_staff'perm的用户返回FALSE.(错误).

有什么想法吗?

django permissions admin decorator

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

Django Modelform(带有排除字段)

我有一个示例表格:

class AdminDiscountForm(ModelForm):  
    class Meta:  
        model = Discount  
        exclude = ('company',)
Run Code Online (Sandbox Code Playgroud)

它指向的模型是:

class Discount(models.Model):
    class Meta:
        verbose_name=_('Discount')
        verbose_name_plural=_('Discounts')
        unique_together = ('company','type')

    company = models.ForeignKey(Company)
    type = models.CharField(max_length=5, choices=DISCOUNT_CHOICES)
    discount = models.DecimalField(max_digits=7, decimal_places=2, verbose_name=_('Discount'))
Run Code Online (Sandbox Code Playgroud)

该表单排除了"公司"字段,因为用户已使用UI选择了此字段.

我打算做一个:

company = blah
if form.is_valid():
    obj = form.save(commit=False)
    obj.company = company
    obj.save()
Run Code Online (Sandbox Code Playgroud)

问题是'company'和'type'的组合应该是唯一的(因此'unique_together').这是在数据库中强制执行的,所以django并不关心.我需要扩展此表单的clean()方法以检查唯一性:

def clean(self):
    cleaned_data = self.cleaned_data
    # check for uniqueness of 'company' and 'type'
Run Code Online (Sandbox Code Playgroud)

这里的问题是'公司'不在那里,因为它被排除在外.在这种情况下,提出表单验证错误的最佳方法是什么?

- 编辑这仅用于添加折扣条目.没有初始实例.

forms django validation

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

Django邮件SMTPlib auth方法问题

我正在尝试使用 Django 和我客户端的 smtp 服务器发送电子邮件。该服务器仅支持 AUTH LOGIN 命令。

默认情况下(据我所知使用wireshark)django发送这个位:

250-AUTH=LOGIN CRAM-MD5 PLAIN
Run Code Online (Sandbox Code Playgroud)

作为电子邮件的一部分。

我已将其跟踪到 /usr/lib/python/smtplib.py:569 ,它在其中选择了身份验证方法(AUTH_LOGIN 有一个选项,这正是我想要的)。

据我所知,我无法在 settings.py (http://docs.djangoproject.com/en/dev/topics/email/) 中使用 vars 设置身份验证方法

有谁知道我如何告诉 Django 使用 auth_login 而不是 auth_cram_md5?

authentication django smtp login

0
推荐指数
1
解决办法
1684
查看次数