我正在尝试在React JSX中执行以下操作(其中ObjectRow是一个单独的组件):
<tbody>
for (var i=0; i < numrows; i++) {
<ObjectRow/>
}
</tbody>
Run Code Online (Sandbox Code Playgroud)
我意识到并理解为什么这不是有效的JSX,因为JSX映射到函数调用.然而,来自模板领域并且是JSX的新手,我不确定如何实现上述(多次添加组件).
在react.js教程中,我们看到了双花括号的这种用法:
<span dangerouslySetInnerHTML={{ __html: rawMarkup }} />
Run Code Online (Sandbox Code Playgroud)
然后在第二个教程中,"思考反应":
<span style={{ color: 'red' }}>
{this.props.product.name}
</span>;
Run Code Online (Sandbox Code Playgroud)
但是,React JSX文档没有描述或提到双花括号.这个语法是什么(双重卷曲)?是否有另一种方式在jsx中表达相同的东西或者这只是文档中的遗漏?
我正在实现我的第一个实际的非教程Backbone应用程序,并且有关于使用backbone.js的一个方面的2-ahh问题,这对我来说并不是很好,这涉及将视图渲染el到DOM中而不是使用一个现有的元素el.我怀疑我会在这里为你们提供一些"受教育的时刻",并感谢你的帮助.
我在Web中看到的大多数Backbone View示例在创建View时指定了tagName,id和/或className,从而创建了一个与DOM无关的el.它们通常看起来像:
App.MyView = Backbone.View.extend({
tagName: 'li',
initialize: function () {
...
},
render: function () {
$(this.el).html(<render an html template>);
return this;
}
});
Run Code Online (Sandbox Code Playgroud)
但是这些教程并不总能解释他们如何建议将渲染的el放入DOM中.我已经看到了几种不同的方式.所以,我的第一个问题是:调用视图的渲染方法并将其插入DOM的适当位置在哪里?(不一定是同一个地方).我已经看到它在路由器,视图的初始化或渲染函数中完成,或者仅在根级文档就绪函数中完成.($(function ()).我可以想象这些都有效,但有没有正确的方法呢?
其次,我从一些HTML标记/线框开始,并将html部分转换为与骨干视图对应的js模板.而不是让视图渲染一个未连接的元素并在html中提供一个锚点来粘贴它,我觉得它更自然,当只有一个元素的视图,它不会消失,使用现有的,清空的包装元素(通常是a div或span)作为el自身.这样我就不用担心在文档中找到插入我未连接的el的位置,这可能最终看起来像这样(注意额外的分层):
<div id="insert_the_el_in_here"> <!-- this is all that's in the original HTML doc -->
<div id="the_el"> <!-- i used to be a backbone generated, unattached el but have been rendered and inserted -->
<!-- we're finally getting to some useful …Run Code Online (Sandbox Code Playgroud) 我想使用Mixin总是为我的子类添加一些init功能,每个类继承自不同的API基类.具体来说,我想创建多个不同的子类,这些子类继承自这些不同的API提供的基类之一和一个Mixin,它将始终以相同的方式执行Mixin初始化代码,而无需代码复制.但是,似乎不会调用Mixin类的__init__函数,除非我在Child类的__init__函数中显式调用它,这不是理想的.我建立了一个简单的测试用例:
class APIBaseClassOne(object):
def __init__(self, *args, **kwargs):
print (" base ")
class SomeMixin(object):
def __init__(self, *args, **kwargs):
print (" mixin before ")
super(SomeMixin, self).__init__(*args, **kwargs)
print (" mixin after ")
class MyClass(APIBaseClassOne):
pass
class MixedClass(MyClass, SomeMixin):
pass
Run Code Online (Sandbox Code Playgroud)
正如您在以下输出中所看到的,Mixin函数的init永远不会被调用:
>>> import test
>>> test.MixedClass()
base
<test.MixedClass object at 0x1004cc850>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点(在调用Mixin时有一个init函数)而不编写每个子类来显式调用Mixin的init函数?(即,不必在每个班级做这样的事:)
class MixedClass(MyClass, SomeMixin):
def __init__(*args, **kwargs):
SomeMixin.__init__(self, *args, **kwargs)
MyClass.__init__(self, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果我所有的子类都继承自相同的基类,我意识到我可以创建一个继承自基类和mixin的新中间类,并保持干燥.但是,它们从具有共同功能的不同基类继承.(准确地说是Django Field类).
我用setup_environ()了一段时间来编写一个一次性的python脚本,从命令行运行,根本不适合作为自定义manage.py命令(我的首选).它很好地设置了一切.我假设我们不赞成这个功能,因为非django pythonistas取笑djangonauts这样的魔法东西,我们厌倦了感觉很脏.所以,如果它被弃用,那么替代方案是什么?也许这是一个懒惰的问题,但我需要用什么来代替setup_environ来实现同样的效果呢?我想我可以将该函数复制/粘贴到我的脚本中,但我认为这不是弃用它的重点.(显然我仍然可以使用一个已弃用的函数,但我希望我的脚本能够存活几个版本的django)
我不想破坏我网站上的所有用户.但我想利用Django 1.5的自定义可插拔用户模型.这是我的新用户模型:
class SiteUser(AbstractUser):
site = models.ForeignKey(Site, null=True)
Run Code Online (Sandbox Code Playgroud)
在新的安装上我的新模型都可以使用(我还有其他代码,还有一个很好的理由 - 所有这些都与此无关).但是,如果我把它放在我的实时网站上并同步和迁移,我将丢失所有用户,或者至少他们将处于与为我的新模型创建的新表不同的孤立表中.
我对南方很熟悉,但基于这篇文章和我的一些试验,似乎它的数据迁移目前还不适合这种特定的迁移.所以我正在寻找一些方法来让South为此工作或者为我的每个服务器(Postgres 9.2)运行的一些非南迁移(原始SQL,dumpdata/loaddata或其他)迁移用户一旦创建了新表,而旧的auth.User表仍在数据库中.
我有三个不同的抽象模型基类...我想在多重继承中使用它们,有点像Mixins.这有什么问题吗?
例如,
class TaggableBase(models.Model):
. . .
class Meta:
abstract = True
class TimeStampedBase(models.Model):
. . .
class Meta:
abstract = True
class OrganizationalBase(models.Model):
. . .
class Meta:
abstract = True
class MyTimeStampedTaggableOrganizationalModel(OrganizationalBase, TimeStampedBase, TaggableBase):
. . .
Run Code Online (Sandbox Code Playgroud) 加入我的新用户表到现场后,显然,django_admin_log仍然有FK到AUTH_USER表.有没有办法解决这个问题?我没有在升级或本地看到这个问题所以必须发生奇怪的事情.
Traceback(最近一次调用最后一次):
在get_response response = callback(request,*callback_args,**callback_kwargs)中输入文件"/app/.heroku/python/lib/python2.7/site-packages/django/core/handlers/base.py",第115行
文件"/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/api/object_wrapper.py",第220行,在调用 self._nr_instance,args,kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/framework_django.py",第475行,包装返回包装(*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/options.py",第372行,在包装器中返回self.admin_site.admin_view(view)(*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py",第91行,在_wrapped_view response = view_func(request,*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/views/decorators/cache.py",第89行,在_wrapped_view_func response = view_func(request,*args,**kwargs)
在内部返回视图中输入文件"/app/.heroku/python/lib/python2.7/site-packages/django/contrib/admin/sites.py",第202行(request,*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py",第25行,在_wrapper中返回bound_func(*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py",第91行,在_wrapped_view response = view_func(request,*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/utils/decorators.py",第21行,在bound_func中返回func(self,*args2,**kwargs2)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py",第223行,内部返回功能(*args,**kwargs)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py",第217行,退出 self.exiting(exc_value,self.using)
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py",第281行,退出提交(using = using)
提交connection.com()中的文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/transaction.py",第152行
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/ INIT py"为,线241,在提交self._commit()
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py",第242行,在_commit six.reraise(utils.IntegrityError,utils.IntegrityError(*tuple(e.args)),sys.exc_info()[2])
文件"/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py",第240行,在_commit中返回self.connection.commit()
文件"/app/.heroku/python/lib/python2.7/site-packages/newrelic-1.10.0.28/newrelic/hooks/database_dbapi2.py",第68行,在提交中返回self._nr_connection.commit()
IntegrityError:在表"django_admin_log"上插入或更新违反外键约束"django_admin_log_user_id_fkey"DETAIL:表("auth_user")中不存在键(user_id)=(2).
作为我的单元测试(使用QUnit)进行骨干项目的一部分,我测试了一些返回主干模型数组的集合操作函数.
有没有办法直接测试(为了理智)我的数组中的对象是否扩展Backbone.Model或者我应该只进行鸭类型检查(如果是,如何,以及在哪个独特属性上)?
由于javascript中没有真正的"类"构造,typeof显然不会在这里做到这一点.
我可以看到这在我的集合的其他测试中很有用,或者检查事情是我的特定Backbone类的实例,等等.
我正处于使用jQuery Mobile开发移动Web应用程序的早期(预编码)阶段(我们看了几周Sencha Touch,但jQuery Mobile更适合我们团队的能力).我用PhoneGap包装jQuery Mobile Web应用程序来创建iPhone,iPod touch和iPad native-ish应用程序.我将Django用于我们的Web应用程序,因此打算在服务器端执行相同的操作,并为移动应用程序和服务器之间的接口提供某种JSON/Ajax/REST数据流.由于它是一个仅限移动设备的应用程序,我们应该可以访问所有HTML5类型的东西.
虽然我可能会针对此实施提出其他问题/问题,但这是我目前的问题/问题:
我需要设置应用程序,以便用户第一次打开应用程序时,必须输入用户名和密码进行身份验证.随后,用户不必进行身份验证,除非用户单击"设置"链接,该链接为他们提供了使用其他帐户或密码进行身份验证的页面.应用程序每次启动时仍应使用最初输入的用户名和密码对服务器进行身份验证,以确保帐户未被禁用或密码已更改或其他内容.
我对认证方案很陌生.我该怎么办?
django ×5
javascript ×4
backbone.js ×2
django-1.5 ×2
reactjs ×2
cordova ×1
django-south ×1
html5 ×1
inheritance ×1
mixins ×1
mobile ×1
postgresql ×1
python ×1