小编sch*_*cki的帖子

链接vs编译与控制器

创建指令时,可以将代码放入编译器,链接函数或控制器中.

在文档中,他们解释说:

  • 编译和链接功能用于角度循环的不同阶段
  • 控制器在指令之间共享

但是,对我而言,目前尚不清楚哪种代码应该去哪里.

例如:我可以在编译中创建函数并将它们附加到链接中的作用域,还是仅将函数附加到控制器中的作用域?

如果每个指令都有自己的控制器,控制器如何在指令之间共享?控制器是真的共享还是只是范围属性?

angularjs angularjs-directive

525
推荐指数
6
解决办法
23万
查看次数

Django py.test找不到设置模块

我有以下项目结构

base
    __init.py
    settings
        __init__.py
        settings.py
    tests
        pytest.ini
        test_module.py
Run Code Online (Sandbox Code Playgroud)

pytest.ini看起来像这样:

[pytest]
#DJANGO_SETTINGS_MODULE =base.settings.settings
Run Code Online (Sandbox Code Playgroud)

test_module.py看起来像这样:

def test_django():
    from base.settings import settings as base_settings
    from django.conf import settings as django_settings
    assert 3==5
Run Code Online (Sandbox Code Playgroud)

我现在跑的时候:

py.test
Run Code Online (Sandbox Code Playgroud)

它会毫无问题地运行导入,并会在assert 3==5(如预期的那样)引发错误.这告诉我基础已打开sys.pathbase.settings.settings可以导入.

现在我test_module.py改为:

def test_django():
    from base.settings import settings as base_settings
    from django.conf import settings as django_settings
    print django_settings.xxx
    assert 3==5
Run Code Online (Sandbox Code Playgroud)

我现在跑的时候:

py.test --ds=base.settings.settings
Run Code Online (Sandbox Code Playgroud)

我收到错误:

错误:无法导入设置'base.settings.settings'(是否在sys.path上?):没有名为base.settings.settings的模块.

当我不通过命令行设置设置,但通过pytest.ini文件(通过取消注释行)时,效果相同.

看起来我想念这里的东西???

python django pytest

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

Django-allauth,JWT,Oauth

我有一个AngularJS单页面应用程序,它使用基于Django Rest Framework的Django后端API.API受到保护django-rest-framework-jwt.我想django-allauth在服务器端使用帐户管理和身份验证.

我只缺少流程中的一个单件:我的客户端的Oauth-Token如何被转换为JWT-token?基本上,我想按照http://blog.wizer.fr/2013/11/angularjs-facebook-with-a-django-rest-api/所述的方式进行操作python-social-auth.

所以我的问题是,如何从链接中实现ObtainAuthToken类django-allauth

django jwt django-allauth

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

django-allauth在有/无验证的情况下更改用户电子邮件

我使用普通的django-allauth没有任何社交帐户.每个用户应该只有一个与其帐户关联的电子邮件地址,即用于注册/验证的电子邮件地址.我想让我的用户更改此电子邮件.

所以我的第一个问题是,我是否应该通过发送验证电子邮件再次验证新电子邮件?我的直觉是,我最好通过这封新电子邮件进行验证.但我没有真正的论据.

我的第二个问题是,如果想要验证,那个过程是否已经用django-allauth支持?我见过EmailView和AddEmailForm.但这些假设是基于一个帐户可以拥有多个电子邮件地址的假设(这不是我想要的).

谢谢

email django django-allauth

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

如何验证 moment.js 持续时间?

似乎只有 moment() 对象有一个 isValid() 方法来检查所提供数据的有效性。moment.duration() 对象是否有任何等价物?因为 isValid() 似乎不存在于持续时间。

duration momentjs

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

指令范围属性根据属性名称而中断

我有一个非常奇怪的现象,指令和隔离范围,其中范围中的属性工作或不起作用取决于属性的命名.如果我使用

{check:'@check'}
Run Code Online (Sandbox Code Playgroud)

它工作正常,如预期的那样.但是,如果我使用:

{checkN:'@checkN'}
Run Code Online (Sandbox Code Playgroud)

定义的函数永远不会被分配.一个例子如下:

HTML:

<item ng-repeat="list_item in model.list" model="list_item" checkN="checkName()" check="checkName()" position="$index"></item>'
Run Code Online (Sandbox Code Playgroud)

使用Javascript

app.directive('item', function(){
   return {
      restrict: 'E',
      replace : false,   
      scope:{
              $index: '=position',
              check: '&check',
              checkN: '&checkN',
              model:'='
      },          
      template: '',
      link: function(scope, element, attrs){
        console.log(scope.check())
        console.log(scope.checkN())          
      }
    }
});
Run Code Online (Sandbox Code Playgroud)

然后控制台会给我以下内容:

The checkName function has been called [which is the return string of the function]
undefined
Run Code Online (Sandbox Code Playgroud)

它有可能取决于大写字母的用法吗?这将是非常"意外"的行为.

谢谢你的帮助

schacki

angularjs angularjs-directive angularjs-scope

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

AngularJS:成功验证后移动到下一个表单输入元素

我已经编写了一个自定义指令来验证我的表单字段.当满足某些条件时(即它是脏的和有效的),我想将焦点自动设置为下一个输入元素.这是我的用户的要求,这样他们就可以最有效地浏览表单.

简化的指令如下所示:

directive('custom', ['$parse', function($parse) {
    return {
        restrict: 'A',
        require: ['ngModel', '^ngController'],
        link: function(scope, element, attrs, ctrls) {
           var model=ctrls[0], form=ctrls[1];

           scope.next = function(){
                return model.$valid
            }

            scope.$watch(scope.next, function(newValue, oldValue){
                if (newValue && model.$dirty){
                    ???
                }
            })
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:我如何识别 - 下一个输入元素(下一个兄弟)或可能通过tabindex - 并在不使用Jquery的情况下关注它?

对我来说,目前尚不清楚如何在没有Jquery的情况下从可用的"scope"或"element"属性获取下一个输入元素; 而JQlite没有"焦点"方法.基本上,我需要一个有效的替代品??? 在我的代码中.

任何帮助都非常感谢.谢谢Juergen

forms validation angularjs

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

Django登录/会话不粘滞

我的网站在生产中启动并运行了一段时间后,我的用户突然登录该网站时遇到了问题。

我已经使用login_required装饰器保护了某些视图/页面,并且我也在使用django admin。当匿名用户访问这些页面中的任何一个时,他将被重定向到登录页面。当该匿名用户添加其凭据时,POST请求成功,并且将其重定向到初始页面。同时,用户将获得一个新的sessionid(如预期的那样)。但是,现在结果变得非常不可靠。当按reload或导航到其他页面(需要登录)时,可能会发生以下两种情况之一:a)识别用户并正确显示该页面b)将用户重定向到登录页面。我已经通过外壳检查了会话的内容,并且那里没有任何变化。

通过负载平衡器和8个应用程序服务器为生产站点提供服务。甚至更陌生:如果我在测试服务器上测试相同的代码(具有相同的设置),那么负载均衡且基本上没有流量,则一切正常。

我在Ubuntu上使用Apache和mod_wsgi在SSL后面的守护进程模式下运行Django 1.6,并且正在使用会话数据库后端。我正在使用django-allauth.account进行帐户管理/登录。我的会话设置如下:

SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_AGE = 60*60*24
SESSION_COOKIE_SECURE = True
Run Code Online (Sandbox Code Playgroud)

更新

为了获得更多调试信息,我创建了以下中间件:

from django.conf import settings

class SessionDebugMiddleware(object):
    def process_response(self, request, response):
        session = request.session
        user = getattr(request, 'user', None)
        if user:
            user=user.id
        session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
        response['X-Meta-Requ'] = '{0},{1},{2},{3}'.format(session_key, session.get('_auth_user_id'), session.get('_auth_user_backend','---'), user)
        return response
Run Code Online (Sandbox Code Playgroud)

如果我按了10次刷新按钮,

  • 8次,我将获得此标头:igv0xshezhdxh50kks9x00r0l67mx0sk,None,---,None
  • 2次,我将获得此标头:X-Meta-Requ:igv0xshezhdxh50kks9x00r0l67mx0sk,330619,django.contrib.auth.backends.ModelBackend,330619

它似乎是随机的,不遵循任何逻辑。

所以我有以下问题/想法?

  1. 无论如何,这可能与负载平衡有关吗?我的理解是,使用数据库会话后端时,Django不需要粘性会话。

  2. 这可能与线程问题有关吗?

  3. 这可能与高负载有关吗?

  4. 这是否与解码问题有关:https : //github.com/django/django/blob/master/django/contrib/sessions/backends/base.py#L83。但是为什么那个解码问题应该不一致。而且我还没有找到任何引用“会话数据已损坏”的日志条目。

任何其他提示都欢迎。

authentication django session login django-allauth

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