创建指令时,可以将代码放入编译器,链接函数或控制器中.
在文档中,他们解释说:
但是,对我而言,目前尚不清楚哪种代码应该去哪里.
例如:我可以在编译中创建函数并将它们附加到链接中的作用域,还是仅将函数附加到控制器中的作用域?
如果每个指令都有自己的控制器,控制器如何在指令之间共享?控制器是真的共享还是只是范围属性?
我有以下项目结构
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.path且base.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文件(通过取消注释行)时,效果相同.
看起来我想念这里的东西???
我有一个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-allauth没有任何社交帐户.每个用户应该只有一个与其帐户关联的电子邮件地址,即用于注册/验证的电子邮件地址.我想让我的用户更改此电子邮件.
所以我的第一个问题是,我是否应该通过发送验证电子邮件再次验证新电子邮件?我的直觉是,我最好通过这封新电子邮件进行验证.但我没有真正的论据.
我的第二个问题是,如果想要验证,那个过程是否已经用django-allauth支持?我见过EmailView和AddEmailForm.但这些假设是基于一个帐户可以拥有多个电子邮件地址的假设(这不是我想要的).
谢谢
似乎只有 moment() 对象有一个 isValid() 方法来检查所提供数据的有效性。moment.duration() 对象是否有任何等价物?因为 isValid() 似乎不存在于持续时间。
我有一个非常奇怪的现象,指令和隔离范围,其中范围中的属性工作或不起作用取决于属性的命名.如果我使用
{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
我已经编写了一个自定义指令来验证我的表单字段.当满足某些条件时(即它是脏的和有效的),我想将焦点自动设置为下一个输入元素.这是我的用户的要求,这样他们就可以最有效地浏览表单.
简化的指令如下所示:
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
我的网站在生产中启动并运行了一段时间后,我的用户突然登录该网站时遇到了问题。
我已经使用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次刷新按钮,
它似乎是随机的,不遵循任何逻辑。
所以我有以下问题/想法?
无论如何,这可能与负载平衡有关吗?我的理解是,使用数据库会话后端时,Django不需要粘性会话。
这可能与线程问题有关吗?
这可能与高负载有关吗?
这是否与解码问题有关:https : //github.com/django/django/blob/master/django/contrib/sessions/backends/base.py#L83。但是为什么那个解码问题应该不一致。而且我还没有找到任何引用“会话数据已损坏”的日志条目。
任何其他提示都欢迎。