我正在尝试编写一个Django Rest Framework API处理程序,它可以接收文件以及JSON有效负载.我已将MultiPartParser设置为处理程序解析器.
但是,我似乎无法做到这两点.如果我将带有文件的有效负载作为多部分请求发送,则在request.data中以错误的方式提供JSON有效负载(第一个文本部分,直到第一个冒号为键,其余为数据).我可以很好地发送标准表单参数中的参数 - 但我的其余API接受JSON有效负载,我希望保持一致.request.body因为它引发而无法读取*** RawPostDataException: You cannot access body after reading from request's data stream
例如,请求正文中的文件和此有效负载:
{"title":"Document Title", "description":"Doc Description"}
变为:
<QueryDict: {u'fileUpload': [<InMemoryUploadedFile: 20150504_115355.jpg (image/jpeg)>, <InMemoryUploadedFile: Front end lead.doc (application/msword)>], u'{%22title%22': [u'"Document Title", "description":"Doc Description"}']}>
有没有办法做到这一点?我可以吃我的蛋糕,保留它并且不会增加任何重量吗?
编辑:有人建议这可能是Django REST Framework上传图片的副本 :"提交的数据不是文件".它不是.上传和请求是在multipart中完成的,请记住文件并上传它很好.我甚至可以使用标准表单变量来完成请求.但我想知道我是否可以在那里获得JSON有效负载.
我想从包装它的装饰器中读取对象方法的本地值.我可以从装饰器中访问函数和func_code,但似乎我可以得到的只是本地变量的名称,而不是它们的值.
可能吗?
我正在研究React/Webpack/Globalize应用程序.在开发模式中,事情是好的(尽管Globalize坚持编译所有语言环境而不是我选择的语言环境,但这是另一天的另一个问题).
但是,当我production: true在我的webpack配置中设置时,我在运行时遇到以下错误npm run build
> webpack --config webpack.prod.config.js
/opt/app/ui/node_modules/globalize-webpack-plugin/GlobalizeCompilerHelper.js:72
throw e;
^
Error: No formatters or parsers has been provided
Run Code Online (Sandbox Code Playgroud)
我的印象是globalize webpack插件用于处理预编译.知道我为什么会看到这个错误吗?当我设置的production: false东西编译正常.
我的插件设置是:
new GlobalizePlugin({
production: true,
developmentLocale: "en",
supportedLocales: [ "en"],
output: "i18n/[locale].[hash].js"
}),
Run Code Online (Sandbox Code Playgroud)
当文件更改并且webpack dev服务器重建时,我收到很多这些消息,表明我没有使用的语言环境的重新编译:
[461] ./~/cldr-data/main/es-PY/dateFields.json 15 kB {0} [optional]
[462] ./~/cldr-data/main/es-SV/dateFields.json 15 kB {0} [optional]
[463] ./~/cldr-data/main/es-US/dateFields.json 15 kB {0} [optional]
[464] ./~/cldr-data/main/es-UY/dateFields.json 15 kB {0} [optional]
[465] ./~/cldr-data/main/es-VE/dateFields.json 15 kB {0} [optional]
[466] ./~/cldr-data/main/es/dateFields.json 15 kB {0} [optional] …Run Code Online (Sandbox Code Playgroud) 这是Debian Squeeez上的Python 2.6.6.我试图找出debian附带的二进制文件是否配置了以下标志:
--with-threads --enable-shared
Run Code Online (Sandbox Code Playgroud)
好像他们不是我需要自己编译和安装源代码.
我有一个基于 Django 的 API 层,它在内部使用 Django 的 i18n 设施(ugettext 等)来提供对某些输出的翻译。该 API 提供一个单页 Javascript 应用程序,该应用程序通过 CLDN/消息文件等使用 jQuery 的 Globalize 及其自己的消息传递工具。
目前,我为 Globalize 的消息模块以 JSON 文件的形式为 UI 生成了自己的语言文件。
理想情况下,我想从一个位置驱动所有可翻译文本。我希望使用 Django 作为可翻译语言的唯一真实来源(因为我可以使用 Rosetta 作为促进翻译的一种方式)。然而,如何让两者一起工作并不是那么简单,我试图避免在它们可能已经存在的地方发明我自己的约定,以防止将来与其他开发人员混淆。
首先,有些文本块比几个单词还大。使用 Django 的 ugettext 我应该提供要翻译的文本或作为参数显示的文本 - 仅提供一个键并要求翻译存在(否则,只显示键)是否是好的约定?
其次,这种用例是否有既定的约定?
如果规范对这种情况有意义,我不想重新发明轮子或偏离规范。
第三- 我应该在两者之间做出选择吗?或者翻译是否可以存在于 Django/API 世界中,然后在 UI 请求时输出为 Globalize/messages 格式?或者我应该使用 Django 为 Javascript 提供的 gettext 实现?
谢谢
django internationalization django-i18n django-rosetta jquery-globalize
我在postgres中得到一个"整数超出范围"错误,但插入的数字都不是"大".他们远远不到一百万.查询是通过Django ORM生成的,非常标准.知道我在这里缺少什么吗?谢谢!
# INSERT INTO "index_index" ("word_id", "ad_id", "field", "position", "created_at") VALUES (98036, 703906, E'y.x', 0, E'2011-09-29 22:02:40.252332') RETURNING "index_index"."id";
ERROR: integer out of range
# \d index_index;
Table "public.index_index"
Column | Type | Modifiers
------------+--------------------------+----------------------------------------------------------
id | integer | not null default nextval('index_index_id_seq'::regclass)
word_id | integer | not null
ad_id | integer | not null
field | character varying(50) | not null
position | integer | not null
created_at | timestamp with time zone | not null
Indexes:
"index_index_pkey" …Run Code Online (Sandbox Code Playgroud) 我有一些数据结构,每个数据结构都有一些独特的字段.它们都实现了相同的行为接口(DataPoint).因此,他们的处理可以在交换每个结构的类型并通过界面中定义的方法对其进行操作时完成一次.我希望有一个函数根据某些条件返回每种类型的空数据结构.但是,我似乎无法编译它,好像我的函数通过签名返回接口但实际上返回一个实现,它抱怨.
这是我的意思的简化示例和操场样本:
https://play.golang.org/p/LxY55BC59D
package main
import "fmt"
type DataPoint interface {
Create()
}
type MetaData struct {
UniqueId string
AccountId int
UserId int
}
type Conversion struct {
Meta MetaData
Value int
}
func (c *Conversion) Create() {
fmt.Println("CREATE Conversion")
}
type Impression struct {
Meta MetaData
Count int
}
func (i *Impression) Create() {
fmt.Println("CREATE Impression")
}
func getDataPoint(t string) DataPoint {
if t == "Conversion" {
return &Conversion{}
} else {
return &Impression{}
}
}
func main() { …Run Code Online (Sandbox Code Playgroud) 我在共享服务器上有一个bazaar存储库.我想清理回购并从头开始设置,但保留了我的历史.我不知道最初是如何创建存储库的(有没有办法找到?).
这是一个可行的过程:
bzr init-repo --no-trees /home/bzr/myrepository
cd /home/bzr/myrepository
bzr init stable
cp /home/oldbzr/branch_taken_from_current_repo/* ./stable/
cp /home/oldbzr/branch_taken_from_current_repo/.bzr ./stable/
Run Code Online (Sandbox Code Playgroud)
谢谢
当我们运行db.stats()时,我们的生产数据库(64位debian上的2.2.1)会抛出以下错误:
> db.stats()
{
"errmsg" : "exception: Invalid BSONObj size: 0 (0x00000000) first element: EOO",
"code" : 10334,
"ok" : 0
}
Run Code Online (Sandbox Code Playgroud)
我们的日志中显示以下内容:
Fri Feb 1 16:28:46 [conn4081] Assertion: 10334:Invalid BSONObj size: 0 (0x00000000) first element: EOO
0xaf8c41 0xabedb9 0xabef3c 0x571fb7 0x6e880d 0x6f6411 0x6e8321 0x6e9cb0 0x6eab4c 0x830028 0x83376b 0x7b0b0d 0x7b20e2 0x56fe42 0xae6ed1 0x7fe7645378ba 0x7fe7638eb02d
/opt/mongodb/bin/mongod(_ZN5mongo15printStackTraceERSo+0x21) [0xaf8c41]
/opt/mongodb/bin/mongod(_ZN5mongo11msgassertedEiPKc+0x99) [0xabedb9]
/opt/mongodb/bin/mongod() [0xabef3c]
/opt/mongodb/bin/mongod(_ZNK5mongo7BSONObj14_assertInvalidEv+0x497) [0x571fb7]
/opt/mongodb/bin/mongod() [0x6e880d]
/opt/mongodb/bin/mongod(_ZN5mongo7DBStats3runERKSsRNS_7BSONObjEiRSsRNS_14BSONObjBuilderEb+0x321) [0x6f6411]
/opt/mongodb/bin/mongod(_ZN5mongo12_execCommandEPNS_7CommandERKSsRNS_7BSONObjEiRNS_14BSONObjBuilderEb+0x51) [0x6e8321]
/opt/mongodb/bin/mongod(_ZN5mongo11execCommandEPNS_7CommandERNS_6ClientEiPKcRNS_7BSONObjERNS_14BSONObjBuilderEb+0xe70) [0x6e9cb0]
/opt/mongodb/bin/mongod(_ZN5mongo12_runCommandsEPKcRNS_7BSONObjERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi+0x2ac) [0x6eab4c]
/opt/mongodb/bin/mongod(_ZN5mongo11runCommandsEPKcRNS_7BSONObjERNS_5CurOpERNS_11_BufBuilderINS_16TrivialAllocatorEEERNS_14BSONObjBuilderEbi+0x38) [0x830028]
/opt/mongodb/bin/mongod(_ZN5mongo8runQueryERNS_7MessageERNS_12QueryMessageERNS_5CurOpES1_+0xc0b) [0x83376b]
/opt/mongodb/bin/mongod() [0x7b0b0d]
/opt/mongodb/bin/mongod(_ZN5mongo16assembleResponseERNS_7MessageERNS_10DbResponseERKNS_11HostAndPortE+0x3a2) [0x7b20e2] …Run Code Online (Sandbox Code Playgroud) 我通过Go Web服务器提供Web内容,并使用正则表达式将处理程序与请求路径进行匹配.我注意到一个非常奇怪的行为,我已经将其稀释到下面的测试代码中.基本上,任何8个字母/数字组合都意味着被处理程序捕获,而其他特定请求路径意味着被其他处理程序捕获.如果字母序列以小写字母'c'结尾,则在第8个字母/数字路径的情况下,第一个处理程序拾取匹配,这很有效.最后的任何其他字母都可以正常工作.
下面的代码可以粘贴到文件中并运行.它将在localhost上发布:8080.我提供了一些请求链接来演示问题.
package main
import (
"fmt"
"net/http"
"regexp"
)
// This is the handler when passing a string of 8 characters ([])
func runTest(w http.ResponseWriter, r *http.Request) {
path := r.URL.Path[1:]
fmt.Fprintf(w, path)
}
func runTest2(w http.ResponseWriter, r *http.Request) {
path := "Reg ex for: .[(css|jpg|png|js|ttf|ico)]$"
fmt.Fprintf(w, path)
}
func runTest3(w http.ResponseWriter, r *http.Request) {
path := "Reg ex for: /all$"
fmt.Fprintf(w, path)
}
// Regular expression handler
type route struct {
pattern *regexp.Regexp
handler http.Handler
}
type …Run Code Online (Sandbox Code Playgroud)