官方文档解释了如何装饰基于类的视图,但是我找不到有关如何为装饰器提供参数的任何信息.
我想实现类似的东西
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 项目中的会话面临一个大问题。
后端托管在.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 的人。
到目前为止,我想出了一个利用BETAGoogle Play频道的技巧:每个设备都使用相同的Google帐户,该帐户已注册为我的私人应用的测试版测试版(并且私有,我的意思是我不希望它可供世界其他地方使用).
在设备上设置"测试版"帐户后,我会像往常一样浏览Google Play并安装该应用.然后,如果GPlay设置为自动更新每个应用程序(默认启用),则在BETA通道上推送的任何新版本的应用程序最终都会在共享所谓的"测试版"Google帐户的每台设备上进行更新.看起来不错.
但是,只要我在通知栏中没有遇到以下错误消息,这个小技巧才有效:
需要帐户操作
它会偶尔触发,并在几天之后传播到我的几乎所有设备上.此错误消息迫使你重新输入谷歌帐户凭据,这是相当考虑到设备的最终用户的一个大问题不和不应该知道这些凭据.
简而言之:为什么出现错误信息以及如何摆脱它?
编辑:我对一个不使用Google Play但另一个应用程序商店(如亚马逊的应用程序商店)的解决方案持开放态度.是的,我确实意识到这个额外的注释是Stack Overflow问题的边界.
我有一个使用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中删除.
现在有几件事:
mydomain.com/#/auth-complete/会不会好起来的.$routeProvider.otherwise('/').$locationProvider.html5Mode(true);中间删除'#',但问题是相同的(重定向后URL和访问令牌立即被删除).$http拦截器,但这对于这个常见任务听起来有点太多了不是吗?有什么建议?
很奇怪,但是每当我尝试使用我的任何 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 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(1.8)中,添加了一些模型字段以利用Postgres数据类型.我对HStoreField感兴趣并且文档要求设置PG 扩展以便HStoreField在模型中使用新的s.
我如何实际使用此类HStoreExtension来执行数据库扩展?
我有一个用Python 2.7运行Django 1.6的项目,由于几个原因,我想升级到Django 1.7.
考虑到南从未在这个项目中使用的,我们有一个自定义用户模型(因为自定义用户模型似乎与发生冲突,这是重要的要记住convert_to_south根据这张票).
为顺利升级到Django 1.7需要采取哪些不同步骤?我的秘密梦想是避免使用South并直接利用Django 1.7的本机模式迁移支持.
我正在开发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) 我必须与 salesforce 平台交谈,我想使用他们的 REST API。然而,salesforce 网站只提供了 Ruby 和 PHP 的示例,但我正在使用 Python (Django)。
有人可以提供连接到 salesforce 并使用 Python 发送简单请求所需的最少代码吗?
假设我们在 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. 任何的想法?
django ×9
python ×3
angularjs ×2
android ×1
cookies ×1
django-1.7 ×1
google-play ×1
migration ×1
oauth ×1
postgresql ×1
rest ×1
salesforce ×1
session ×1