小编Dav*_*nes的帖子

使用CSS3划分斜边框?

我正在创建一个javascript小部件来调整邻近div的大小,以便在用户将鼠标悬停在其上时显示更多div的背景图像.这很简单,并且可以很好地处理具有直边(显然)的div.然而,边界'需要'倾斜.

是否有一种简单的方法使用css3在2个DOM元素之间形成倾斜的边界?

我遇到过css3转换(即倾斜)和对角线边界技巧(使用半色,半透明),但这些似乎都无法实现我所需要的.

我想要实现的效果就像在这张图片中:

dom元素之间的诊断边界

html css css3 css-shapes

19
推荐指数
1
解决办法
6409
查看次数

仅在 DRF 中进行身份验证时才检查 CSRF?

TLDR;如果客户端具有经过身份验证的会话,则我的 POST(到 DRF 端点)似乎仅受 CSRF 保护。这是错误的,并留下了登录CSRF攻击的应用程序选项。我怎样才能解决这个问题?

我开始为 ReactJS 前端构建 django rest 框架 API,我们希望通过 API 处理一切,包括身份验证。我们正在使用 SessionAuthentication。

如果我有一个经过身份验证的会话,那么 CSRF 完全按预期工作(当经过身份验证时,客户端应该设置一个 CSRF cookie,这需要与 POST 数据中的 csrfmiddlewaretoken 配对)。

但是,如果未通过身份验证,则似乎没有 POST 需要接受 CSRF 检查。包括已经创建的(基本)登录APIView。这使得该站点容易受到登录 CSRF漏洞的攻击。

有谁知道如何在未经身份验证的会话上强制执行 CSRF 检查?和/或 DRF 似乎如何绕过 CSRF 检查以进行登录?

下面是我的粗略设置...

设置.py:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated',
    ],
}
Run Code Online (Sandbox Code Playgroud)

视图.py:

class Login(APIView):

    permission_classes = (permissions.AllowAny,)

    @method_decorator(csrf_protect)  # shouldn't be needed
    def post(self, request, format=None):
        user = authenticate(
            request,
            username=request.POST['username'],
            password=request.POST['password'] …
Run Code Online (Sandbox Code Playgroud)

django csrf django-csrf csrf-protection django-rest-framework

10
推荐指数
1
解决办法
3438
查看次数

Bitbucket pull请求自动合并代码?

我只是在玩bitbucket/mercurial pull requests功能,而且有些事情表现得很奇怪,或者我正在做一些非常愚蠢的事情.

我(theukdave)是一个存储库'RepoA'的所有者,它是在'团队'下创建的(我收集的bitbucket实际上已经没有了).让我们说它住在bitbucket.org/team1/RepoA

所以我用自己的用户名创建了一个存储库的fork,称之为RepoB.所以现在有一个生活在bitbucket.org/theukdave/RepoB的分叉

然后,我在主开发分支'develop'的分支上创建一个测试提交,然后将新分支合并回develop.我推到了bitbucket.org/theukdave/RepoB,然后创建了一个从'theukdave/RepoB develop'到'team1/RepoA develop'的拉取请求,我添加了一个标题和描述,没有评论者(因为我只是测试正确)现在)并单击"创建拉取请求"按钮.

片刻之后,RepoB的测试提交和合并显示在我的RepoA中.拉请求在那里,我可以看到它,我还没有批准它,但是提交和合并并且可供RepoA的所有用户使用.即使我拒绝了拉取请求,测试提交仍然在RepoA中.

这是因为我是RepoA的所有者,所以我的拉取请求会自动合并吗?是因为我没有添加评论者吗?两者的组合?或者我在这里遗漏了一些东西......

mercurial bitbucket pull-request

7
推荐指数
1
解决办法
718
查看次数

使用django-filer,我可以从'未排序的上传'中选择图像进入的文件夹吗?

我第一次使用django-filer,它看起来很棒,而且工作得很好.

但是我的所有图像都被上传到"未排序的上传"文件夹,我无法找到将它们放入特定文件的方法.这让我觉得它是一个基本功能,并且考虑到它允许你创建文件夹,这一定是可能的,对吧?但我在文档中找不到它,快速查看源代码并没有帮助我.

我有一个基本的设置,如:

class Story(models.Model):
    image = FilerImageField()

class Gift(models.Model):
    # some stuff

class GiftImage(models.Model):
    gift = models.ForeignKey(Gift)
    image = FilerImageField()
Run Code Online (Sandbox Code Playgroud)

我希望GiftImage.image和Story.image进入单独的文件夹,以便为管理员用户更轻松地进行排序/搜索.

我试过了

image = FilerImageField(upload_to='somewhere') # How a django ImageField would do it
image = FilerImageField(folder='somewhere') # a guess
image = FilerImageField(name='somewhere') # a guess
image = FilerImageField(folder_name='somewhere') # another guess
Run Code Online (Sandbox Code Playgroud)

所有这些都给我一个"TypeError:init()得到一个意外的关键字参数......"或者只是不做我希望的事情.

干杯!

python django django-filer

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

Django SECURE_SSL_REDIRECT破坏使用内置客户端的单元测试

我正在一个已经有数百个单元测试的项目中,其中许多使用内置的django Client或django rest框架APIClient进行请求和测试响应。

最近刚刚实施的必要性,使SSL工作在本地,并设置SECURE_SSL_REDIRECT为True(试图让我们的dockerised devtest环境接近production可能),我有栽跟头发现如此多的单元测试失败,由于(API客户端默认情况下始终使用http而不是https进行请求。

许多(大多数)请求如下所示:

response = self.client.get(some_url)
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用:

response = self.client.get(some_url, secure=True)
Run Code Online (Sandbox Code Playgroud)

但这确实意味着要更改许多单元测试。使用时也是如此follow=True,但是还具有其他缺点,即这可能会产生其他一些不良行为。

我看不到在Django客户端中将安全请求的使用设置为默认行为的方法。我可以创建自己的SecureClient(和SecureAPIClient),但随后必须确保创建一个新的基本TestCase(可能是多个)来继承,并在所有测试中都对其进行更改-仍然很多工作。

当然可以猴子修补客户端,但是我不愿意这样做,因为它可能会产生不良后果,以后很难调试。

TLDR;是否有一种简单的方法(理想情况下受支持),即通过django测试的客户端发出所有单元测试请求,默认情况下使用SSL?

django ssl unit-testing django-rest-framework

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

通过 ManyToManyField = Value 订购 django 查询集

如果有一些模型,如:

class Tag(models.Model):
    name = models.CharField()

class Thing(models.Model):
    title = models.CharField()
    tags = models.ManyToManyField(Tag)
Run Code Online (Sandbox Code Playgroud)

我可以做一个过滤器:

Thing.objects.filter(tags__name='foo')
Thing.objects.filter(tags__name__in=['foo', 'bar'])
Run Code Online (Sandbox Code Playgroud)

但是是否可以在标签值上订购查询集?

Thing.objects.order_by(tags__name='foo')
Thing.objects.order_by(tags__name__in=['foo','bar'])
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我期望(或喜欢)的是所有事物模型,但在它们有我知道的标签/标签的地方订购。我不想过滤掉它们,而是将它们带到顶部。

我认为使用 FIELD 运算符是可能的,但似乎我只能使它在该模型表中的列上工作,例如标题,但不能在链接表上工作。

谢谢!

编辑:接受以下解决方案后,我意识到它的一个错误/限制。

如果一个特定的事物有多个标签,那么(由于在 SQL 的幕后进行了左连接)它将为该事物生成一个条目,为它拥有的每个标签。每个匹配或不匹配的标签都有一个真或假。

将 .distinct() 添加到查询集仅略有帮助,限制为每个事物最多 2 行(即一个 tagged=True,一个 tagged=False)。

我知道我需要在 SQL 中做什么,即 MAX() 到 CASE(),然后 GROUP BY Thing 的主键,这意味着我将为每个 Thing 获得一行,如果有任何标签匹配,则标记将为 True(否则为 False)。

我看到的方式,人们通常达到这个样的事情是使用.values()是这样的:

Thing.objects.values('pk').annotate(tagged=Max(Case(...)))
Run Code Online (Sandbox Code Playgroud)

但结果只是 pk 和标记,我需要整个 Thing 模型作为结果。所以我设法实现了我想要的,因此:

from django.db.models import Case, When, Max, BooleanField

tags = ['music'] # for example

queryset = Thing.objects.all().annotate(tagged=Max(Case(
    When(tags__name__in=tags, …
Run Code Online (Sandbox Code Playgroud)

python django django-models

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