假设我在FileField中存储了一个文本文件.现在我想在网页上显示其内容.我阅读了django模板文档,但没有找到办法.
当然,我可以content = f.read()在我的视图中进行并传递content给模板.有没有更好的办法?谢谢!
better way意味着我可以通过传递MyModel.objects.all()给模板完成工作.我不能在模板中read的文件,但应该有一些黑客为此.
编辑
我试过:
def display_html(self):
content = self.html_file.read()
print(content)
return content
Run Code Online (Sandbox Code Playgroud)
但没有显示......
最终编辑
下面的代码很有用
class MyModel(models.Model):
name = models.CharField()
text = models.FileField()
def display_text_file(self):
fp = open(self.text.path)
return fp.read().replace('\n', '<br>')
Run Code Online (Sandbox Code Playgroud)
然而,我认为相同的东西不起作用:
class MyModel(models.Model):
name = models.CharField()
text = models.FileField()
def display_text_file(self):
return self.text.read().replace('\n', '<br>')
# neither do self.text.read().decode().replace('\n', '<br>')
Run Code Online (Sandbox Code Playgroud)
我真的很想知道原因.
我需要计算 JavaScript 中两个日期时间之间的持续时间。我试过这个代码:
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){dd='0'+dd} if(mm<10){mm='0'+mm} today = mm+'/'+dd+'/'+yyyy; //Current Date
console.log("current date"+today);
var valuestart ="8:00 AM";
var valuestop = "4:00 PM";//$("select[name='timestop']").val();
//create date format
var timeStart = new Date("01/01/2007 " + valuestart).getHours();
var timeEnd = new Date("01/01/2007 " + valuestop).getHours();
var hourDiff = timeEnd - timeStart;
console.log("duration"+hourDiff);
Run Code Online (Sandbox Code Playgroud)
由此,我可以获得当前日期和持续时间。但是当我用变量“今天”替换日期“01/01/2007”时,我得到的结果为 NaN。请指导我在哪里我错了。提前致谢。
图片来自https://hpbn.co/http2/#streams-messages-and-frames。
我想确保我真正理解发生了什么,所以这是我的理解:
我对么?
Python REPL 有很多种,比如默认的 REPL、ptpython、ipython、bpython 等。当我已经使用 REPL 时,有没有办法检查当前的 REPL 是什么?
一点背景知识:
正如您可能已经听说的,我制作了pdir2来生成漂亮的dir()打印。我面临的一个挑战是使其与那些第三方 REPL 兼容,但首先我需要知道程序在哪个 REPL 中运行。
众所周知,您可以del sys.modules[module]删除导入的模块.所以我在想:这与重写有sys.modules什么不同?一个有趣的事实是,重写sys.modules不能真正删除模块.
# a_module.py
print("a module imported")
Run Code Online (Sandbox Code Playgroud)
然后
import sys
def func1():
import a_module
# del sys.modules['a_module']
sys.modules = {
k: v for k, v in sys.modules.items() if 'a_module' not in k}
print('a_module' not in sys.modules) # True
def func2():
import a_module
func1() # a module imported
func2() # no output here
Run Code Online (Sandbox Code Playgroud)
如果我使用del sys.modules['a_module'],调用func2()也打印a module imported,这意味着a_module成功删除.
我的问题是:del sys.modules[module]除了更改字典之外,实际上做了什么?
我的目录树:
test/
|_____ 1.txt content: 1_line1\n1_line2
|_____ 2.txt content: 2_line1\n2_line2
|_____ test_fileinput.py
Run Code Online (Sandbox Code Playgroud)
我的Python脚本:
import fileinput
import sys
for line in fileinput.input(sys.argv[1:]):
print(fileinput.filename(), fileinput.filelineno(), line)
Run Code Online (Sandbox Code Playgroud)
首先我在Linux上尝试过,因为你看它完美无瑕:
$ python3 test_fileinput.py *.txt
1.txt 1 1_line1
1.txt 2 1_line2
2.txt 1 2_line1
2.txt 2 2_line2
Run Code Online (Sandbox Code Playgroud)
但在Windows上:

当然我可以做python test_fileinput.py 1.txt 2.txt,但我想知道有没有办法让我仍然可以通过*.txtWindows?谢谢.
当我尝试在Mac OS X 10.9.5中安装uWSGI时,我收到以下错误:
Installing collected packages: uwsgi
Running setup.py install for uwsgi
plugins/python/pyutils.c:14:22: error: equality comparison with extraneous parentheses [-Werror,-Wparentheses-equality]
if (((exc)->ob_type == &PyClass_Type)) {
~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
plugins/python/pyutils.c:14:22: note: remove extraneous parentheses around the comparison to silence this warning
if (((exc)->ob_type == &PyClass_Type)) {
~ ^ ~
plugins/python/pyutils.c:14:22: note: use '=' to turn this equality comparison into an assignment
if (((exc)->ob_type == &PyClass_Type)) {
^~
=
1 error generated.
Complete output from command /Users/jakob/.virtualenvs/uwsgi/bin/python -c "import setuptools, tokenize;__file__='/Users/jakob/.virtualenvs/uwsgi/build/uwsgi/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', …Run Code Online (Sandbox Code Playgroud) 假设我有一段这样的代码:
import sys
def printer(frame, event, arg):
print(frame, event, arg)
return printer
sys.settrace(printer)
x = 1
sys.settrace(None)
Run Code Online (Sandbox Code Playgroud)
自从
每当进入新的本地范围时,都会调用跟踪函数(事件设置为“call”)
上面的代码没有输出任何内容。请参阅我之前的问题。
那么有没有一种方法可以在全局范围内跟踪线路,例如x = 1?
.Smalltalk 中的用法到底是什么?根据我的理解,它是不同语句的分隔符,但如果语句在最后可以省略。那是对的吗?
我知道这听起来像是一个重复的问题,但这是因为我不知道如何正确地描述这个问题。
由于某种原因,我得到了一堆这样的unicode字符串:
a = u'\xcb\xea'
Run Code Online (Sandbox Code Playgroud)
如您所见,它实际上是汉字的字节表示形式,编码为 gbk
>>> print(b'\xcb\xea'.decode('gbk'))
?
Run Code Online (Sandbox Code Playgroud)
u'?'是我需要的,但是我不知道如何转换u'\xcb\xea'为b'\xcb\xea'。
有什么建议么?