小编Bud*_*hot的帖子

在Django中基于类的视图上具有参数的函数装饰器

官方文档解释了如何装饰基于类的视图,但是我找不到有关如何为装饰器提供参数的任何信息.

我想实现类似的东西

class MyView(View):
    @method_decorator(mydecorator, some_parameters)
    def dispatch(self, *args, **kwargs):
        return super(MyView, self).dispatch(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

这相当于

@mydecorator(some_parameters)
def my_view(request):
    ....
Run Code Online (Sandbox Code Playgroud)

我该如何处理这类案件?

django python-decorators

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

如何处理Django中不共享同一个域的前端

我在 Django 项目中的会话面临一个大问题。

后端托管在.my-domain.org,前端使用后端的 REST API .front-end.com。将来,可能会出现完全不同域上的其他前端。

使用django提供的session框架时出现这种情况如何处理?似乎SESSION_COOKIE_DOMAIN只允许在一个子域上设置会话 cookie 。结果是,如果我希望能够在.my-domain.org(ie, SESSION_COOKIE_DOMAIN = None)登录,那么.front-end.com当它调用 API 端点时我无法接收会话 cookie 。另一方面,设置SESSION_COOKIE_DOMAIN.front-end.com会阻止我连接到站点管理员。SESSION_COOKIE_PATH当然,情况也受到影响...

任何帮助都非常受欢迎。我很确定我不是第一个需要可以从外部域访问具有会话身份验证的 REST API 的人。

django cookies session django-rest-framework

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

如何在您拥有的数百台设备上分发和远程更新私有Android应用程序?

到目前为止,我想出了一个利用BETAGoogle Play频道的技巧:每个设备都使用相同的Google帐户,该帐户已注册为我的私人应用的测试版测试版(并且私有,我的意思是我不希望它可供世界其他地方使用).

在设备上设置"测试版"帐户后,我会像往常一样浏览Google Play并安装该应用.然后,如果GPlay设置为自动更新每个应用程序(默认启用),则在BETA通道上推送的任何新版本的应用程序最终都会在共享所谓的"测试版"Google帐户的每台设备上进行更新.看起来不错.

但是,只要我在通知栏中没有遇到以下错误消息,这个小技巧才有效:

需要帐户操作

它会偶尔触发,并在几天之后传播到我的几乎所有设备上.此错误消息迫使你重新输入谷歌帐户凭据,这是相当考虑到设备的最终用户的一个大问题不应该知道这些凭据.

简而言之:为什么出现错误信息以及如何摆脱它?

编辑:我对一个不使用Google Play但另一个应用程序商店(如亚马逊的应用程序商店)的解决方案持开放态度.是的,我确实意识到这个额外的注释是Stack Overflow问题的边界.

android google-play

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

AngularJS ui-router与OAuth2 access_token冲突

我有一个使用ui-router在AngularJS中开发的前端.消费从后端我需要得到OAuth2用户访问令牌(隐补助金)的REST API.

我的问题就出在OAuth舞蹈的最后一步,当我得到了从接入认证服务器令牌回到网址

mydomain.com/home/#access_token=hdzjkdnba89fenbjkéz38U0D903ç&...
Run Code Online (Sandbox Code Playgroud)

mydomain.com/home 显然是重定向URI.

重定向后只需几分之一秒,AngularJS会更改URL

mydomain.com/#/my-default-view
Run Code Online (Sandbox Code Playgroud)

因此,访问令牌从URL中删除.

现在有几件事:

  • 我不允许定义包含哈希("#")重定向URI我OAuth2用户端.因此,像mydomain.com/#/auth-complete/不会好起来的.
  • 我用$routeProvider.otherwise('/').
  • 我试图设置$locationProvider.html5Mode(true);中间删除'#',但问题是相同的(重定向后URL和访问令牌立即被删除).
  • 由于即使在Angular修改了URL后,仍然可以在HTTP响应中访问访问令牌,我可能会使用一个$http拦截器,但这对于这个常见任务听起来有点太多了不是吗?

有什么建议?

oauth angularjs

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

无法手动使用我的 DRF 序列化程序

很奇怪,但是每当我尝试使用我的任何 DRF 序列化器来序列化一个对象时,例如:

me = CustomUser.objects.all()[0]
serializer = CustomUserSerializer(me)

serializer.is_valid()
# --> False
print(serializer.errors)
# {"non_field_errors": ["No input provided"]}
Run Code Online (Sandbox Code Playgroud)

这发生在完全不同的序列化程序和各种对象上。

但是,如果我使用基于类的视图(间接使用相同的序列化程序和相同的对象),我能够接收到数据按预期序列化的 JSON 响应。换句话说,调用链接到此视图的端点

class CustomUserList(generics.ListAPIView):
    queryset = CustomUser.objects.all()
    serializer_class = CustomUserSerializer
Run Code Online (Sandbox Code Playgroud)

确实会返回CustomUsers数据库中所有的 JSON 表示。

一定有什么我不太明白的地方。

django serialization django-rest-framework

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

虽然设置了 django-corsheaders 但出现 CORS 问题

每当我尝试对后端端点(在单独的域上,运行 Django 1.7)进行 AJAX 调用时,我都会收到来自 Angular 的错误消息:

仅协议方案支持跨源请求:http、data、chrome-extension、https、chrome-extension-resource

我确实已经django-corsheaders安装了,CORS_ORIGIN_ALLOW_ALL = True并且中间件设置正确。那么出了什么问题呢?

我不确定这些信息是否相关,但我仍在一台主机上测试所有内容,这意味着有一个 XAMPP 服务器在 Angular 前端运行,localhost还有一个 Gunicorn 实例在localhost:5000后端运行。

django angularjs django-cors-headers

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

如何设置Postgres扩展?

在最新版本的Django(1.8)中,添加了一些模型字段以利用Postgres数据类型.我对HStoreField感兴趣并且文档要求设置PG 扩展以便HStoreField在模型中使用新的s.

我如何实际使用此类HStoreExtension来执行数据库扩展?

python django postgresql

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

将一个存在的项目从Django 1.6迁移到1.7

我有一个用Python 2.7运行Django 1.6的项目,由于几个原因,我想升级到Django 1.7.

考虑到南从未在这个项目中使用的,我们有一个自定义用户模型(因为自定义用户模型似乎与发生冲突,这是重要的要记住convert_to_south根据这张票).

为顺利升级到Django 1.7需要采取哪些不同步骤?我的秘密梦想是避免使用South并直接利用Django 1.7的本机模式迁移支持.

migration django django-1.7

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

使用自定义用户模型时,Django管理员中的“请更正以下错误”

我正在开发Django应用程序,我完全按照以下说明构建了自定义用户。

现在,当我尝试从管理面板创建新用户时,收到此错误消息 在此处输入图片说明

所以不是很有用。另外,无论我使用“更改”表单还是“创建”表单,我都遇到相同的问题。

但是,如果我尝试通过外壳创建新用户,例如

MyUser.objects.create_user(email="test@gmail.com", password=None)
Run Code Online (Sandbox Code Playgroud)

有用。


故障排除

这是定制用户的模型:

class MyUser(AbstractBaseUser):
    """
    A base user on the platform. Users are uniquely identified by
    email addresses.
    """
    email = models.EmailField(
        verbose_name = "Email address",
        max_length   = 100,
        unique       = True
    )
    is_active  = models.BooleanField(default=True, blank=True)
    is_admin   = models.BooleanField(default=False, blank=True)

    @property
    def is_staff(self):
        return self.is_admin

    objects = MyUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ()

    def get_full_name(self):
        return self.email

    def get_short_name(self):
        return self.email

    def __unicode__(self):
        return self.email

    def has_perm(self, perm, obj=None): …
Run Code Online (Sandbox Code Playgroud)

django

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

通过 REST API 与 Django 的 salesforce 交谈

我必须与 salesforce 平台交谈,我想使用他们的 REST API。然而,salesforce 网站只提供了 Ruby 和 PHP 的示例,但我正在使用 Python (Django)。

有人可以提供连接到 salesforce 并使用 Python 发送简单请求所需的最少代码吗?

python django rest salesforce

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

ModelForm.Meta 中的条件字段

假设我们在 Django 应用程序中有一个自定义用户模型。为了使其在管理页面中可 CRUD,我们需要定义一些表单。

下面是UserChangeForm用于修改我们自定义用户模型的实例

class UserChangeForm(forms.ModelForm):

    class Meta:
        model  = MyCustomUser
        fields = (
            ...,
            'email',
            'is_active',
            'is_admin',
            'groups',
            ....
        )
Run Code Online (Sandbox Code Playgroud)

问题是:如何根据模型实例在类中实现条件 (即超出 Meta 的范围)?fieldsMeta

目标是声明类似的东西

def get_fields(self):
    if self.instance.is_company:
        return ('email', 'company_name', 'headquarters')
    else:
       return ('email', 'first_name', 'last_name')
Run Code Online (Sandbox Code Playgroud)

在外部类中,然后想办法将函数的结果注入到Meta.fields. 任何的想法?

python django

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