我正在做一些前端实验,我想有一个非常基本的网络服务器来快速启动项目并提供文件(一个index.html文件+一些css/js/img文件).所以我正在尝试使用node.js和express,我已经玩了两次,但是这次我不想使用渲染引擎,因为我只有一个静态文件,这个代码我得到了html文件但不是资产(错误404):
var express = require('express'),
app = express.createServer();
app.configure(function(){
app.use(express.static(__dirname + '/static'));
});
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法(如果可能,在一个文件中)或Express需要使用视图和渲染引擎?
我正在为一个项目开发一个API,我通过OrderProducts建立了一个关系Order/Products,如下所示:
在catalog/models.py中
class Product(models.Model):
...
Run Code Online (Sandbox Code Playgroud)
在order/models.py中
class Order(models.Model):
products = models.ManyToManyField(Product, verbose_name='Products', through='OrderProducts')
...
class OrderProducts(models.Model):
order = models.ForeignKey(Order)
product = models.ForeignKey(Product)
...
Run Code Online (Sandbox Code Playgroud)
现在,当我通过API加载订单时,我也希望获得相关产品,所以我尝试了这个(使用django-tastypie):
按顺序/ api.py
class OrderResource(ModelResource):
products = fields.ToManyField('order.api.OrderProductsResource', products, full=True)
class Meta:
queryset = Order.objects.all()
resource_name = 'order'
class OrderProductsRessource(ModelResource):
order = fields.ToOneField(OrderResource, 'order')
class Meta:
queryset = OrderProducts.objects.all()
resource_name = 'order/products'
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误信息:"'产品'对象没有属性'订单'".所以我不确定什么是错的或遗漏的,它可能也需要我的产品资源中的东西,但我尝试了几种方法但没有成功.欢迎任何帮助:)
我正在尝试在Django应用程序上添加实时更新,该应用程序具有与此处所述类似的体系结构:http://lincolnloop.com/blog/2012/apr/23/ginger-tech-stack/.基本上,更新通过Redis从Django发送到Node.js,然后通过Socket.io推送到连接的客户端.现在,我可以向连接的每个客户广播,但在实际情况下,我需要通过动作向有关客户发送数据(例如:用户发布消息,只有他的联系人/订阅者收到此消息).所以我需要在Node.js端进行某种身份验证,以了解谁是谁.怎么能实现这一目标?
当我尝试通过我的项目API使用foreignkey(在本例中为2)创建一个对象时,tastypie也尝试创建相关对象(此处为order&participant):
class ParticipationResource(ModelResource):
order = fields.ForeignKey(Order, 'order', full=True,)
participant = fields.ForeignKey(UserProfile, 'participant', full=True)
class Meta:
authorization = Authorization()
queryset = Participation.objects.all()
resource_name = 'participation'
fields = ['id', 'order', 'participant', 'products', 'created_at', 'modified_at']
filtering = {
'participant': ALL
}
detail_allowed_methods = ['get', 'post', 'put', 'delete',]
always_return_data = True
Run Code Online (Sandbox Code Playgroud)
发布的数据:
{
"order": {
"id":"1",
"resource_uri":"/api/v1/order/1/"
...
},
"participant":{
"id":"1",
"resource_uri":"/api/v1/participant/1/"
...
},
"products":[]
}
Run Code Online (Sandbox Code Playgroud)
错误消息(network_id是用户配置文件模型上的外键):
"error_message": "app_user_profile.network_id may not be NULL",
Run Code Online (Sandbox Code Playgroud)
你可以看到我在我的POST请求中发送完整的对象,我只尝试了resource_uri并且工作正常,问题是我需要客户端渲染的完整对象(我使用的是Backbone,模型是自动渲染).那我该怎么办?有没有办法让tastypie不创建相关对象?
django ×3
api ×2
node.js ×2
tastypie ×2
backbone.js ×1
django-orm ×1
express ×1
javascript ×1
redis ×1