我有一个正在创建的 Django 站点,我希望其中一些页面嵌入视频。这些视频不是模型的一部分。我只是希望能够使用视图来确定要播放的视频文件,然后将文件路径传递到模板中。所有文件都在本地托管(至少目前是这样)。可以用 Django 做吗?如果是这样,我该怎么做?
我想要一个基本配置文件,其他配置文件使用它来共享通用配置。
例如,如果我有一个base.yml文件
foo: 1
bar:
- 2
- 3
Run Code Online (Sandbox Code Playgroud)
然后是第二个some_file.yml文件
foo: 2
baz: "baz"
Run Code Online (Sandbox Code Playgroud)
我希望最终得到一个合并的配置文件
foo: 2
bar:
- 2
- 3
baz: "baz"
Run Code Online (Sandbox Code Playgroud)
编写处理标签的自定义加载器很容易!include。
class ConfigLoader(yaml.SafeLoader):
def __init__(self, stream):
super().__init__(stream)
self._base = Path(stream.name).parent
def include(self, node):
file_name = self.construct_scalar(node)
file_path = self._base.joinpath(file_name)
with file_path.open("rt") as fh:
return yaml.load(fh, IncludeLoader)
Run Code Online (Sandbox Code Playgroud)
然后我可以解析一个!include标签。所以如果我的文件是
inherit:
!include base.yml
foo: 2
baz: "baz"
Run Code Online (Sandbox Code Playgroud)
但现在基本配置是一个映射。即如果我加载文件我最终会得到
foo: 1
bar:
- 2
- 3
Run Code Online (Sandbox Code Playgroud)
但是如果我不将标签作为映射的一部分,例如
!include base.yml
foo: 2
baz: …Run Code Online (Sandbox Code Playgroud) 我正在查看一堆我继承的(Postgresql)SQL代码,有两个正在使用的表示法,我没有遵循。一种正在使用$$。例如Create function ... returns FOO as $$和select NULL::int field_name from table。
由于使用符号而在谷歌搜索时遇到了麻烦,而且我甚至不确定我应该搜索什么。
所以我一直在编写迭代器,我认为我理解它们.但是我今晚一直在努力解决一些问题,而且我玩的越多,我就越困惑.
我认为对于迭代器你必须实现__iter__和next(或__next__).当你第一次尝试遍历迭代器时,__iter__将调用该方法,然后next在StopIteration被引发之前调用它.
当我运行此代码时
class Iter(object):
def __iter__(self):
return iter([2, 4, 6])
def next(self):
for y in [1, 2, 3]:
return y
iterable = Iter()
for x in iterable:
print(x)
Run Code Online (Sandbox Code Playgroud)
输出是2 4 6.所以__iter__被称呼,但不是next.这似乎与我在这里找到的文档相符.但那时我脑海里浮现出更多问题.
具体来说,如果不是实现的话,容器类型和迭代器之间有什么区别next?我如何知道我的课程将以哪种方式对待?最重要的是,如果我想编写一个next我使用时调用方法的类,我for x in Iter()该怎么做?
s在 Vim 中,和 之间有什么区别c?如果我替换n个字母或单词,改变它们有什么区别吗?替代和改变是否有不同的情况?
python ×2
config ×1
django ×1
iterator ×1
postgresql ×1
python-2.7 ×1
pyyaml ×1
ruamel.yaml ×1
sql ×1
vi ×1
vim ×1
yaml ×1