我编写了一个支持标准CRUD操作的RESTful Web服务,它可以返回一组符合特定条件的对象(SEARCH动词),但是我想添加一个更高阶的COUNT动词,因此客户端可以计算匹配搜索条件的资源,而不必获取所有这些资源.
我遇到的一些选择:
忽略HTTP规范并在HEAD请求的响应主体中返回对象计数.
复制SEARCH动词的逻辑,但是发出HEAD请求而不是GET请求.然后,服务器将对响应头中的对象计数进行编码.
定义一个新的HTTP方法COUNT,它返回响应主体中的对象计数.
我更喜欢第一种方法的API,但我必须选择该选项,因为它不符合要求.第二种方法似乎在语义上最正确,但API不是很方便:客户端必须处理响应头,大多数时候他们希望能够做一些简单的事情response.count.所以我倾向于第三种方法,但我担心定义新的HTTP方法可能会遇到的问题.
你会怎么做?
客户端的Django应用程序间歇性地(大约每天两次)投掷RuntimeError("Unable to create a new session key."):
Traceback (most recent call last):
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/admin/views/decorators.py", line 17, in _checklogin
if request.user.is_active and request.user.is_staff:
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/middleware.py", line 9, in __get__
request._cached_user = get_user(request)
File "/usr/local/lib/python2.6/dist-packages/django/contrib/auth/__init__.py", line 107, in get_user
user_id = request.session[SESSION_KEY]
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py", line 47, in __getitem__
return self._session[key]
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/base.py", line 195, in _get_session
self._session_cache = self.load()
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/cache.py", line 16, in load
self.create()
File "/usr/local/lib/python2.6/dist-packages/django/contrib/sessions/backends/cache.py", line …Run Code Online (Sandbox Code Playgroud) 我们在postgresql 9.0上运行了一个非常典型的django应用程序.由于管理界面中的搜索效率低下,我们最近发现了一些运行时间超过4小时的数据库查询.虽然我们计划修复这些查询,但作为一种安全措施,我们希望人为地将数据库查询时间限制为15秒 - 但仅限于Web请求的上下文中; 批处理作业和芹菜任务不应受此约束的约束.
我们怎么做?或者这是一个可怕的想法?
我正在使用Django Web应用程序将Unicode字符串存储在MySQL数据库中.我可以很好地存储Unicode数据,但是在查询时,我发现它é并被e视为它们是相同的字符:
In [1]: User.objects.filter(last_name='Jildén')
Out[1]: [<User: Anders Jildén>]
In [2]: User.objects.filter(last_name='Jilden')
Out[2]: [<User: Anders Jildén>]
Run Code Online (Sandbox Code Playgroud)
直接使用MySQL shell时也是如此:
mysql> select last_name from auth_user where last_name = 'Jildén';
+-----------+
| last_name |
+-----------+
| Jildén |
+-----------+
1 row in set (0.00 sec)
mysql> select last_name from auth_user where last_name = 'Jilden';
+-----------+
| last_name |
+-----------+
| Jildén |
+-----------+
1 row in set (0.01 sec)
Run Code Online (Sandbox Code Playgroud)
以下是数据库字符集设置:
mysql> SHOW variables LIKE '%character_set%';
+--------------------------+------------------------------------------------------+
| Variable_name | …Run Code Online (Sandbox Code Playgroud) 我一直这样做:
Model.objects.filter(key1=value1)\
.exclude(key2=value2)\
.order_by('key3')\
.select_related(depth=1)
Run Code Online (Sandbox Code Playgroud)
但我很讨厌\.有更清洁的风格吗?
SyntaxError: Unexpected token catch加载脚本后,以下JavaScript代码段会立即引发:
try {
// Client error (e.g., form validation)
if ((jqXHR.status === 400) && data.errors) {
// do something
}
// Server error (e.g., can't send email)
else if ((jqXHR.status === 500) && data.errors) {
// do something else
}
// Unknown error
else {
throw;
}
} catch(e) {
// Handle error
}
Run Code Online (Sandbox Code Playgroud)
与SyntaxError: Unexpected tokenSO上的其他问题不同,这个问题不是由格式错误的JSON引起的,也不是简单地忘记支撑.语法有问题,但不能立即清楚它是什么.
django ×3
amazon-ec2 ×1
api ×1
collation ×1
http ×1
javascript ×1
memcached ×1
mysql ×1
performance ×1
postgresql ×1
python ×1
rest ×1
unicode ×1
utf-8 ×1