小编Str*_*ire的帖子

Django 1.8 - 信号 - @receiver 装饰器和 Signal.connect() 方法有什么区别?

他们似乎在做同样的事情。在功能、使用等方面有区别吗?在什么情况下应该使用一个?

谢谢

python django signals decorator receiver

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

如何编写基于类的Django验证程序?

我正在使用Django 1.8。

编写验证器文档中有一个基于函数的验证器的示例。它还在使用类时说以下内容:

您也可以将类与__call__()方法结合使用,以使用更复杂或可配置的验证器。例如,RegexValidator使用此技术。如果在验证器模型字段选项中使用了基于类的验证器,则应通过添加deconstruct()__eq__()方法确保迁移框架可将其序列化。

  • 基于类与基于函数的验证器的优缺点是什么?
  • __call__()用途是什么,如何使用?
  • deconstruct()用途是什么,如何使用?
  • __eq__()用途是什么,如何使用?

一个例子会有所帮助。完整的答案也可能值得在正式文档中提交。

谢谢!

python oop django validation class

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

当更新同一模型中的另一个特定字段时,如何更新 Django models.DateTimeField?

我在这里的模型中有两个字段:

is_active = models.BooleanField(default=False)
active_from = models.DateTimeField(blank=True)
Run Code Online (Sandbox Code Playgroud)

is_active设置为True,我想active_from进行更新,以当前日期时间。

我该怎么做?如果在一个领域也有一种更清洁的方法,我愿意接受替代方案。

谢谢!

编辑:我想在模型中包含它以保持封装。这将是 API 的一部分。

django datetime django-models

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

如何允许用户使用 django-rest-framework-social-oauth2 注册电子邮件?

如果他们愿意,我希望用户能够在不使用第 3 方的情况下进行注册。很少有网站需要用户名才能登录,所以我想使用电子邮件而不是用户名。

django-rest-framework-social-oauth2结合了python-social-authdjango-oauth-toolkit

python-social-auth 包含一个EmailAuth后端,应该让用户使用电子邮件和密码进行注册。但是,我不明白使用它而不是特定于 Django 的身份验证后端的含义,并且文档将其标记为“遗留”,这听起来有点可怕。

事实上,我不知道如何创建帐户(包括来自 3rd 方的帐户)如何与 Django 用户模型相关,因为它需要用户名。

使用 EmailAuth 会丢失什么?这是去这里的理想方式,还是有其他选择?

出于我不明白的原因,Django 仍然不支持电子邮件而不是没有自定义用户模型的用户名,因此无论我需要为基于电子邮件的帐户使用定制的或开源的东西。

编辑:蟒蛇-社会- AUTH只是填充与用户名字段username = email.split('@', 1)[0]如图所示这里。我想我可能需要创建一个自定义的 Django 用户模型并将 python-social-auth 指向它,但我不确定如何,我不确定这是否仍应通过 EmailAuth 或独立于 python-social 使用- 授权。

django rest registration django-rest-framework python-social-auth

5
推荐指数
0
解决办法
481
查看次数

使用 django-rest-framework 自动“由用户创建”字段?

模型.py

class Nugget(TimeStampedModel):
    added_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, related_name='added_by', blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)

序列化程序.py

class NuggetSerializer(TaggitSerializer, serializers.ModelSerializer):
    added_by = serializers.CreateOnlyDefault(default=serializers.CurrentUserDefault())
Run Code Online (Sandbox Code Playgroud)

视图.py

class NuggetList(generics.ListCreateAPIView):
    queryset = Nugget.objects.all()
    serializer_class = NuggetSerializer

    def perform_create(self, serializer):
        serializer.save(added_by=self.request.user)
Run Code Online (Sandbox Code Playgroud)

我正在努力实现的目标:

added_by 应该:

  1. 被设置在create一个Nugget
  2. 默认为user创建者Nugget,无法覆盖此默认值
  3. Nugget检索a 时包含并显示
  4. 不在可create/POST浏览 API 中显示为选项
  5. 之后不可编辑 create

python django django-models django-rest-framework

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

Django 1.8:如何在当前项目中使用第一个3rd Party Fork?

我对开发仍然很陌生...

我想简化django-friendship并添加一些不同的功能。我已经在GitHub上进行了分叉。我不确定下一步该怎么做。

我的django-friendship仓库的本地副本应该放在哪里?我应该将其作为应用程序集成到当前的Django项目中,还是将其设置为单独的项目?在这种情况下,如何在开发时将我的主要Django项目设置为将其用作应用程序?

我可以从这里学到的任何指导或其他资源将不胜感激。

谢谢!

python django django-apps

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

如何在 Django 中编写一个装饰器来检查两个单独的条件并相应地重定向?

在我的项目中,一旦注册,用户必须Profile在访问站点的其余部分之前创建一个。我想要一个装饰器@profile_decorator来代替@login_decorator.

如果用户是

  1. 未登录,重定向到 login URL
  2. 已登录,但没有profile, 重定向到create profile URL
  3. 已登录,已profile,允许继续查看

这是来自django.contrib.auth.decorators

from functools import wraps

from django.conf import settings
from django.contrib.auth import REDIRECT_FIELD_NAME
from django.shortcuts import resolve_url
from django.utils.decorators import available_attrs
from django.utils.six.moves.urllib.parse import urlparse


def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
    """
    Decorator for views that checks that the user passes the given test,
    redirecting to the log-in page if necessary. The test should be a callable
    that takes …
Run Code Online (Sandbox Code Playgroud)

python authentication django decorator

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

GeoDjango:我怎样才能得到两点之间的距离?

我的Profile模型有这个领域:

location = models.PointField(geography=True, dim=2, srid=4326)
Run Code Online (Sandbox Code Playgroud)

我想locations使用GeoDjango 计算这两者之间的距离(考虑到地球是一个椭球体),这样我就可以将这个距离存储在数据库中.

  1. 如何用GeoDjango计算这个距离?
  2. 结果是什么单位?
  3. 是否存在存储此数据的"最佳"方式?浮动?十进制?

我已经回顾过以前的类似问题,并没有发现它们有用.没有答案足以解释正在发生的事情或其原因.

我正在使用Django 1.8和GeoDjango所需的最新版本库.

谢谢!

python django location distance geodjango

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

这两种方法在Django ModelForm中覆盖save()方法有什么区别?

我遇到过两种方法.这里接受的答案表明:

def save(self, *args, **kwargs):
    instance = super(ModelClass, self).save(commit=False)
    instance.my_stuff = manual_value
    instance.save()
Run Code Online (Sandbox Code Playgroud)

但是,在这里找到的以下内容似乎更优雅:

def save(self, *args, **kwargs):
    self.my_stuff = manual_value
    super(ModelClass, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

是否有任何理由选择一个而不是另一个,除了后者是少一行,例如save()首先运行父母的原因?

python django django-forms

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

在Django模型中,如何根据特定字段阻止删除?

在下面,我有一个Post模型.一个Post对象有一个status可以是'unpublished'或的字段'published'.

if status is 'published',我想阻止对象被删除,并希望将此逻辑封装在模型本身中.

from model_utils import Choices  # from Django-Model-Utils
from model_utils.fields import StatusField


class Post(model.Models)

    STATUS = Choices(
        ('unpublished', _('Unpublished')),
        ('published', _('Published')),
    )

    ...

    status = StatusField(default=STATUS.unpublished)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?delete如果使用a批量删除对象,则覆盖该方法将不起作用QuerySet.我读过不使用接收器,但我不确定为什么.

django overriding django-models receiver

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

如何通过Django Class模型自动更新日期字段

我在表中的名为Created_date和updated_date的数据库中有2个字段,并且还在Django模型类中定义了它,而且我使用的是默认管理控制台,用户可以使用该控制台来插入或更新记录。

但是我希望以上两个字段可以自动插入,而不是通过默认管理控制台插入或更新。

对于created_date:当新插入记录时应使用该值,并且如果任何字段正在更新则不会更改。

对于Updated_date:无论何时插入或更新记录,都应采用当前日期。

我也希望这两个字段可显示但不可编辑..我可以通过属性editable ='False'对其进行定义吗

问候

django django-models

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

在Python中,如何检查字符串是否包含列表中的任何字符串?

例如,在哪里:

list = [admin, add, swear]
st = 'siteadmin'
Run Code Online (Sandbox Code Playgroud)

st包含字符串adminlist.

  • 我该如何执行此检查?
  • 如何通知我list找到哪个字符串,如果可能的话(从开始到结束以突出显示有问题的字符串)?

这对黑名单很有用.

python string list blacklist

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