这与此问题有关:Django根据客户端python返回json和html
我有一个django应用程序的命令行python api.当我通过api访问应用程序时它应该返回json并且使用浏览器它应该返回html.我可以使用不同的URL来访问不同的版本,但是如何使用一个模板在views.py中呈现html模板和json?
要呈现我将使用的HTML:
return render_to_response('sample/sample.html....')
Run Code Online (Sandbox Code Playgroud)
但是如果没有放入json模板,我将如何为json做同样的事情呢?(内容类型应该是application/json而不是text/html)
编辑1:
什么会决定json和html输出?
所以在我看来:
if something:
return render_to_response('html_template',.....)
else:
return HttpReponse(jsondata,mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个字符串和一个对象列表:
gpl = "%(id)s : %(atr)s"
objects = [{'id':1, 'content':[{'atr':'big', 'no':2}]}, {'id':2, 'content': [{'atr':'small', 'no':3}]}]
for obj in objects:
for con in obj['content']:
print gpl %(obj,con)
Run Code Online (Sandbox Code Playgroud)
我明白了:
TypeError: format requires a mapping
Run Code Online (Sandbox Code Playgroud)
我该如何打印?我正在尝试打印:
1 : big
2 : small
Run Code Online (Sandbox Code Playgroud)
谢谢
我对我的工作存储库进行了一些更改,并添加了一些小的(2kb-10kb)python文件.然后我捆绑了我的更改:
hg bundle --base 100:120 nameofbundle.hg
Run Code Online (Sandbox Code Playgroud)
我的捆绑似乎是20MB.当我跑:
hg diff -r 100:120
Run Code Online (Sandbox Code Playgroud)
我可以看到我在python文件中所做的所有更改,但它仍然没有解释20MB大小.我可能有可能添加另一个文件,从而导致这个奇怪的大小,有没有办法查看这个文件或被跟踪的文件(从r100-120)?
我希望我已经说清楚了,我仍然是一个善变的新手.
编辑1
我跑的时候
hg bundle --base 119:120 nameofbundle.hg
hg bundle --base 118:120 nameofbundle.hg
Run Code Online (Sandbox Code Playgroud)
当我在python文件中为两个变更集编辑了8行时,我找到了439个变更集.我不明白这些变化是不是在差异中显示?
谢谢
回答:
该命令应该是
hg bundle -r 120 --base 100 nameofbundle.hg
Run Code Online (Sandbox Code Playgroud)
这只捆绑了20个变更集,并将尺寸缩小到仅仅16k.
我成功地找到了生成vim编辑器和从python脚本创建tempfile的代码.代码在这里,我在这里找到它:从python脚本调用EDITOR(vim)
import sys, tempfile, os
from subprocess import call
EDITOR = os.environ.get('EDITOR','vim')
initial_message = ""
with tempfile.NamedTemporaryFile(suffix=".tmp") as tempfile:
tempfile.write(initial_message)
tempfile.flush()
call([EDITOR, tempfile.name])
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我退出编辑器后无法访问临时文件的内容.
tempfile
<closed file '<fdopen>', mode 'w+b' at 0x87c47b0>
tempfile.readline()
Run Code Online (Sandbox Code Playgroud)
我明白了
ValueError: I/O operation on closed file
Run Code Online (Sandbox Code Playgroud)
我做了:
myfile = open(tempfile.name)
IOError: [Errno 2] No such file or directory: '/tmp/tmp7VKzfl.tmp'
Run Code Online (Sandbox Code Playgroud)
使用编辑器编辑后,如何在python脚本中访问该文件?
谢谢
我的repo中有一个名为some/work/file.py的文件.
我一直在repo工作(除了file.py之外的其他文件)并提交我的更改并从版本20到30.
如何在不包含其他文件的情况下从版本20到30仅为file.py创建补丁?
就像是:
hg export 20:30 file.py > new.patch
Run Code Online (Sandbox Code Playgroud)
尝试过该命令但不起作用.
谢谢
我需要澄清一下.例如,如果我使用序列化对象执行视图:
def sample(request):
res = [{'name':'man'}]
encoded = json.dumps(res)
return render_to_response('sample/example.html',{'encoded':encoded} )
Run Code Online (Sandbox Code Playgroud)
在我的模板中,我通过:
{{encoded}}
Run Code Online (Sandbox Code Playgroud)
现在从python脚本我可以做:
data = json.loads(urllib2.urlopen(url/to/site).read()
Run Code Online (Sandbox Code Playgroud)
它说ValueError:无法解码JSON对象.但是{{encoded}}不是json对象吗?如果是这样我怎么能得到它?
谢谢
我有一个django应用程序,它有html模板,我还有一个命令行python api,可以对服务器上的django应用程序执行GET和POST请求.api几乎可以完成django应用程序可以执行的所有操作.我怎么做到当我通过浏览器访问django应用程序时它返回html但是当我通过api访问它时它返回json?
我将在哪里放置json以及我必须对我的应用程序进行哪些更改?
谢谢
我这里有一些代码:
m = None
n = None
if not m:
print "Something happens"
>>> Something happens
Run Code Online (Sandbox Code Playgroud)
如果我做:
if not m and n:
print "Something happens"
Run Code Online (Sandbox Code Playgroud)
什么都没发生.
但我能做到:
m, n = 1,2
if m and n:
print "Something happens"
>>> Something happens
Run Code Online (Sandbox Code Playgroud)
为什么如果和不处理相同的方式?"如果不是",不接受'和'陈述?
谢谢
我只是有点困惑为什么我不能在我的控制器规范中存根局部变量.
这是我的控制器:
Class UsersController < ApplicationController
...
def get_company
resp = Net::HTTP.get("http://get_company_from_user_id.com/#{params[:id]}.json")
@resp = JSON.parse(resp.body)
...
Run Code Online (Sandbox Code Playgroud)
我的规格如下:
class ResponseHelper
def initialize(body)
@body = body
end
end
describe "Get company" do
it "returns successful response" do
stub_resp_body = '{"company": "example"}'
stub_resp = ResponseHelper.new(stub_resp_body)
controller.stub!(:resp).and_return(stub_resp)
get :get_company, {:id => @test_user.id}
expect(response.status).to eq(200)
end
end
Run Code Online (Sandbox Code Playgroud)
我仍然得到一个错误说:
Errno::ECONNREFUSED:
Connection refused - connect(2)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如果我正在对resp变量进行存根,为什么它仍在尝试执行HTTP请求resp?在这种情况下如何存根变量?
我的模型是:
class Report(models.Model):
created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
我的观点是:
def filter_range(request):
results = Report.objects.filter(created__range=['2012/01/09 00:00','2012/01/11 23:59'])
return render_to_response("log/filter.html", {'results':results})
Run Code Online (Sandbox Code Playgroud)
它给出了错误:
Exception Type: ValidationError
Exception Value: [u'Enter a valid date/time in YYYY-MM-DD HH:MM[:ss[.uuuuuu]] format.']
Run Code Online (Sandbox Code Playgroud)
可能有什么问题?谢谢你。