他们似乎在做同样的事情。在功能、使用等方面有区别吗?在什么情况下应该使用一个?
谢谢
我正在使用Django 1.8。
编写验证器的文档中有一个基于函数的验证器的示例。它还在使用类时说以下内容:
您也可以将类与
__call__()方法结合使用,以使用更复杂或可配置的验证器。例如,RegexValidator使用此技术。如果在验证器模型字段选项中使用了基于类的验证器,则应通过添加deconstruct()和__eq__()方法确保迁移框架可将其序列化。
__call__()用途是什么,如何使用?deconstruct()用途是什么,如何使用?__eq__()用途是什么,如何使用?一个例子会有所帮助。完整的答案也可能值得在正式文档中提交。
谢谢!
我在这里的模型中有两个字段:
is_active = models.BooleanField(default=False)
active_from = models.DateTimeField(blank=True)
Run Code Online (Sandbox Code Playgroud)
当is_active设置为True,我想active_from进行更新,以当前日期时间。
我该怎么做?如果在一个领域也有一种更清洁的方法,我愿意接受替代方案。
谢谢!
编辑:我想在模型中包含它以保持封装。这将是 API 的一部分。
如果他们愿意,我希望用户能够在不使用第 3 方的情况下进行注册。很少有网站需要用户名才能登录,所以我想使用电子邮件而不是用户名。
django-rest-framework-social-oauth2结合了python-social-auth和django-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
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)
class NuggetSerializer(TaggitSerializer, serializers.ModelSerializer):
added_by = serializers.CreateOnlyDefault(default=serializers.CurrentUserDefault())
Run Code Online (Sandbox Code Playgroud)
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 应该:
create一个Nuggetuser创建者Nugget,无法覆盖此默认值Nugget检索a 时包含并显示create/POST浏览 API 中显示为选项create我对开发仍然很陌生...
我想简化django-friendship并添加一些不同的功能。我已经在GitHub上进行了分叉。我不确定下一步该怎么做。
我的django-friendship仓库的本地副本应该放在哪里?我应该将其作为应用程序集成到当前的Django项目中,还是将其设置为单独的项目?在这种情况下,如何在开发时将我的主要Django项目设置为将其用作应用程序?
我可以从这里学到的任何指导或其他资源将不胜感激。
谢谢!
在我的项目中,一旦注册,用户必须Profile在访问站点的其余部分之前创建一个。我想要一个装饰器@profile_decorator来代替@login_decorator.
如果用户是
login URLprofile, 重定向到create profile URLprofile,允许继续查看这是来自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) 我的Profile模型有这个领域:
location = models.PointField(geography=True, dim=2, srid=4326)
Run Code Online (Sandbox Code Playgroud)
我想locations使用GeoDjango 计算这两者之间的距离(考虑到地球是一个椭球体),这样我就可以将这个距离存储在数据库中.
我已经回顾过以前的类似问题,并没有发现它们有用.没有答案足以解释正在发生的事情或其原因.
我正在使用Django 1.8和GeoDjango所需的最新版本库.
谢谢!
我遇到过两种方法.这里接受的答案表明:
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()首先运行父母的原因?
在下面,我有一个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.我读过不使用接收器,但我不确定为什么.
我在表中的名为Created_date和updated_date的数据库中有2个字段,并且还在Django模型类中定义了它,而且我使用的是默认管理控制台,用户可以使用该控制台来插入或更新记录。
但是我希望以上两个字段可以自动插入,而不是通过默认管理控制台插入或更新。
对于created_date:当新插入记录时应使用该值,并且如果任何字段正在更新则不会更改。
对于Updated_date:无论何时插入或更新记录,都应采用当前日期。
我也希望这两个字段可显示但不可编辑..我可以通过属性editable ='False'对其进行定义吗
问候
例如,在哪里:
list = [admin, add, swear]
st = 'siteadmin'
Run Code Online (Sandbox Code Playgroud)
st包含字符串admin从list.
list找到哪个字符串,如果可能的话(从开始到结束以突出显示有问题的字符串)?这对黑名单很有用.
django ×11
python ×8
decorator ×2
receiver ×2
blacklist ×1
class ×1
datetime ×1
distance ×1
django-apps ×1
django-forms ×1
geodjango ×1
list ×1
location ×1
oop ×1
overriding ×1
registration ×1
rest ×1
signals ×1
string ×1
validation ×1