如何在python的datetime中获取日期名称(例如:星期一,星期二,星期三,星期四,星期五,星期六和星期日)?...
这是我的handlers.py中的代码
from django.utils.xmlutils import SimplerXMLGenerator
from piston.handler import BaseHandler
from booking.models import *
from django.db.models import *
from piston.utils import rc, require_mime, require_extended, validate
import datetime
class BookingHandler(BaseHandler):
allowed_method = ('GET', 'POST', 'PUT', 'DELETE')
fields = ('id', 'date_select', 'product_name', 'quantity', 'price','totalcost', 'first_name', 'last_name', 'contact', 'product')
model = Booking
def read(self, request, id, date_select):
if not self.has_model():
return rc.NOT_IMPLEMENTED
try:
prod = Product.objects.get(id=id)
prod_quantity = prod.quantity
merge = []
checkDateExist = Booking.objects.filter(date_select=date_select)
if checkDateExist.exists():
entered_date = Booking.objects.values('date_select').distinct('date_select').filter(date_select=date_select)[0]['date_select']
else: …
Run Code Online (Sandbox Code Playgroud) 我们正在为Django项目寻找一般的RESTful API解决方案.我们首先使用API来进行网站上的Ajax调用,然后再使用移动应用程序,外部应用程序等等.
我发现了两个似乎被广泛使用的模块.django-piston和django-tastypie
从我读到的,活塞似乎更老,因此更成熟但可能有点过时?!虽然tastypie相对较新并且记录良好.
什么是最好的选择?django-piston或django-tastypie?对我们来说很重要(按优先级排序):持续维护源,文档,稳定性和易用性.
编辑(2013年7月16日):
一年多以后,我们有一个明显的赢家.起初我们去了tastypie.我们有点喜欢.但经过半年左右的时间,我们转向了即将到来的django-rest-framework并且从未回头.
我们最喜欢的是:
很好的文档
积极的社区
干净的设计(基于django基于类的视图)
用于开发和调试的可浏览API
我们非常依赖API,因此支持(将来)是我们主要关注的问题之一.我们遇到了维护者 - 汤姆克里斯蒂 - (在线和离线),他似乎非常致力于这个项目.所以我们觉得使用django-rest-framework非常舒服.
我已经查看了Piston文档的相关部分,但它似乎只关注如何打开它,而不是它对客户来说是什么样子,或者如何测试它以验证它是否正常工作.该示例似乎只使用HTTP Basic和curl
.最后,Ned Batchelder的问题让它看起来像是一个教程.谢谢.
我有一个问题,当其中一个字段是我的主键时,如何更新我的数据库中的现有行.我正在使用ModelForm和Django-Piston - 我的主要目标是将RESTful Post发送到我的webservice.我能够正确发送初始帖子(即主键值尚不存在).问题是当我想更新主键已经存在的值时 - 当我发出f.is_valid()时,它失败,因为"此UniqueIdentifier已经存在".如何使用ModelForms更新现有行进行表单验证?
我的models.py:
from django.db import models
class DeviceModel(models.Model):
uniqueIdentifier = models.CharField(primary_key=True, max_length=100)
deviceToken = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
forms.py
from django import forms
from models import DeviceModel
class DeviceModelForm(forms.ModelForm):
class Meta:
model = DeviceModel
Run Code Online (Sandbox Code Playgroud)
handlers.py
class DeviceHandler(BaseHandler):
allowed_methods = ('POST', 'GET', 'DELETE',)
def create(self, request):
f = DeviceModelForm(request.POST)
if f.is_valid():
new_object = f.save()
return new_object
return rc.BAD_REQUEST
Run Code Online (Sandbox Code Playgroud)
urls.py
from django.conf.urls.defaults import *
from piston.resource import Resource
from api.handlers import DeviceHandler
device_handler = Resource(DeviceHandler)
urlpatterns = patterns('',
(r'^api/$', device_handler, …
Run Code Online (Sandbox Code Playgroud) 我把头发拉到这里是因为这对我不起作用,看起来应该是这样.
我正在使用Django-Piston开发API并拥有2个模型,Building和Building Area.
BuildingArea有一个ForeignKey to Building,因为建筑物中有多个区域.FK的'related_name'属性是'areas',因此我可以从给定的Building访问BuildingAreas.
问题是它在Admin中看起来都很好但是当我点击/api/building.json端点时,所有我得到的是Building对象,而没有JSON中包含的嵌套的BuildingArea对象.
我原本以为Django-Piston默认会遵循反向FK字段,或者我错过了什么?
handlers.py
class BuildingHandler(BaseHandler):
allowed_methods = ('GET',)
model = Building
def read(self, name=None):
return self.model.objects.all()
Run Code Online (Sandbox Code Playgroud)
models.py
class Building(models.Model):
address = models.CharField(max_length=255)
def __unicode__(self):
return self.address
class BuildingArea(models.Model):
display_name = models.CharField(max_length=30)
building = models.ForeignKey(Building, related_name='areas')
def __unicode__(self):
return self.display_name
Run Code Online (Sandbox Code Playgroud) 我已经构建了一个Django Web应用程序和一些Django-Piston服务.使用Web界面用户提交的一些数据被发布到Web服务,进而该Web服务使用Django的芹菜启动一个后台任务.
使用manage.py在开发环境中一切正常.现在我正试图在适当的apache服务器上将其转移到生产中.Web应用程序和Web服务在生产中运行良好,但我遇到了将celeryd作为守护进程启动的严重问题.根据这些说明:http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#running-the-worker-as-a-daemon我创建了一个celeryconfig.py文件,并在它卡住/ usr/bin目录(这是celeryd在我的arch linux服务器上的位置).
CELERYD_CHDIR="/srv/http/ControllerFramework/"
DJANGO_SETTINGS_MODULE="settings"
CELERYD="/srv/http/ControllerFramework/manage.py celeryd"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从命令行启动celeryd时,我收到以下错误:
"Missing connection string! Do you have "
celery.exceptions.ImproperlyConfigured: Missing connection string! Do you have CELERY_RESULT_DBURI set to a real value?
Run Code Online (Sandbox Code Playgroud)
不知道从哪里开始.以下是我的settings.py部分,因为它与此问题有关:
BROKER_HOST = "localhost"
BROKER_PORT = 5672
BROKER_USER = "controllerFramework"
BROKER_PASSWORD = "******"
BROKER_VHOST = "localhost"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Piston为Django提供REST支持.我根据提供的文档实现了我的处理程序.问题是我可以"读取"和"删除"我的资源,但我无法"创建"或"更新".每次我点击相关的api我得到400 Bad request Error.
我已经使用这个常用的代码片段扩展了csrf的Resource类:
class CsrfExemptResource(Resource):
"""A Custom Resource that is csrf exempt"""
def __init__(self, handler, authentication=None):
super(CsrfExemptResource, self).__init__(handler, authentication)
self.csrf_exempt = getattr(self.handler, 'csrf_exempt', True)
Run Code Online (Sandbox Code Playgroud)
我的类(代码片段)看起来像这样:
user_resource = CsrfExemptResource(User)
class User(BaseHandler):
allowed_methods = ('GET', 'POST', 'PUT', 'DELETE')
@require_extended
def create(self, request):
email = request.GET['email']
password = request.GET['password']
phoneNumber = request.GET['phoneNumber']
firstName = request.GET['firstName']
lastName = request.GET['lastName']
self.createNewUser(self, email,password,phoneNumber,firstName,lastName)
return rc.CREATED
Run Code Online (Sandbox Code Playgroud)
请让我知道如何使用POST操作使create方法工作?
我已经在网上关注了许多教程和示例来设置和使用django活塞.它们都完美无缺,直到我尝试集成oauth身份验证.我一直在反对以下例子:
http://blog.carduner.net/2010/01/26/django-piston-and-oauth/ http://github.com/clemesha/django-piston-oauth-example
然而,这两者似乎都未能包含所需的oauth模板和视图的示例.我很可能没有正确实现它,所以任何建议都会非常有用.
综上所述.我有一个工作的django活塞设置(返回/插入数据).我正在努力的是集成oauth身份验证的权威指南.即我需要安装什么,我需要创建哪些视图,设置,网址模式和模板?
谢谢
我有一个dict,我想使用simplejson转换为JSON.
如何确保我的dict的所有键都是小写的?
{
"DISTANCE": 17.059918745802999,
"name": "Foo Bar",
"Restaurant": {
"name": "Foo Bar",
"full_address": {
"country": "France",
"street": "Foo Bar",
"zip_code": "68190",
"city": "UNGERSHEIM"
},
"phone": "+33.389624300",
"longitude": "7.3064454",
"latitude": "47.8769091",
"id": "538"
},
"price": "",
"composition": "",
"profils": {},
"type_menu": "",
"ID": ""
},
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢大家看看我的问题,对不起,我没有详细解释为什么我想要这个.这是修补JSONEmitter
的django-piston
.
当你想在Django中"恢复"你的Django项目时,你更喜欢什么?
我得出的结论是,有三个选项可以做到:
对我来说这样做的正确方法是尝试所有''并选择最适合我的那个,所以同时我想听听你的...
谢谢.
django-piston ×10
django ×9
python ×5
api ×2
json ×2
oauth ×2
rest ×2
celery ×1
datetime ×1
foreign-keys ×1
modelform ×1
simplejson ×1