我刚刚从 vim 切换到 neovim。以下 vim 配置设置通过缩进获得我想要的行为:
\nset tabstop=4\nset shiftwidth=4\nset softtabstop=4\nset autoindent\nset backspace=indent,eol,start\nRun Code Online (Sandbox Code Playgroud)\n这里的相关部分是自动缩进:
\nset autoindent\nRun Code Online (Sandbox Code Playgroud)\n在每个换行符上,这会导致 vim 匹配上一行的缩进:
\ndef demo_autoindent():\n a = 'This line was manually indented'\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\nRun Code Online (Sandbox Code Playgroud)\n的声明a手动缩进一步,但第二行自动缩进到同一级别。在这里,我用一系列\xc2\xb7字符表示自动缩进。
Neovim 符合这种行为。然而,Neovim 试图在块方面变得更聪明,或者在本例中用 python 声明字典:
\ndef example_neovim():\n b = {\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\nRun Code Online (Sandbox Code Playgroud)\n请注意,Neovim 并未自动缩进该行。如果有,它将与 的声明具有相同的 4 个空格缩进b。相反,Neovim 额外添加了两个缩进,使总数达到 12 个空格。
显然,它的目的是添加进一步的缩进:
\ndef example_neovim_intention():\n c = {\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\nRun Code Online (Sandbox Code Playgroud)\n如何将 Neovim 配置为:
\n我正在尝试使用 docutils 包将 ReST 转换为 HTML。这个答案简洁地使用了 docutils 的publish_*便利功能来一步实现这一点。我想转换的 ReST 文档有多个部分,我想在生成的 HTML 中将它们分开。因此,我想分解这个过程:
这是我正在努力解决的第三步。以下是我如何执行第一步和第二步:
from docutils import utils
from docutils.frontend import OptionParser
from docutils.parsers.rst import Parser
# preamble
rst = '*NB:* just an example.' # will actually have many sections
path = 'some.url.com'
settings = OptionParser(components=(Parser,)).get_default_values()
# step 1
document = utils.new_document(path, settings)
Parser().parse(rst, document)
# step 2
for node in document:
do_something_with(node)
# step 3: Help!
for node in filtered(document): …Run Code Online (Sandbox Code Playgroud) 我正在使用 Django 和 HTMX。我的一个视图收到 GET 请求并返回整个页面。但是,如果该 GET 请求来自 HTMX 元素,则视图将返回一个片段:
from django.shortcuts import render
def view_example(request):
if request.htmx:
return render(request, 'fragment.html')
else:
return render(request, 'page.html')
Run Code Online (Sandbox Code Playgroud)
在page.htmlHTMX 元素中触发需要此片段的 GET 请求。它有效 - 我的功能测试看到 HTMX 请求的结果。当我在浏览器中查看它时,它也有效。但它在我的单元测试中不起作用!
我正在尝试测试两种不同类型的响应:
from django.test import TestCase
class TestRequests(TestCase):
def test_page(self):
response = self.client.get('/')
self.assertTemplateUsed(response, 'page.html')
def test_fragment(self):
headers = {'Hx-Request': 'true'}
response = self.client.get('/', **headers)
self.assertTemplateUsed(response, 'fragment.html')
Run Code Online (Sandbox Code Playgroud)
test_page按预期通过,但test_fragment失败:
AssertionError:False 不是 true:模板“fragment.html”不是用于呈现响应的模板。实际使用的模板:page.html
如何模拟 HTMX 请求以便测试我的片段逻辑?
我用谷歌搜索了我的问题,但没有找到答案。我的问题是:我正在尝试在 python 3 中的方法中更改字符串。我正在尝试这样的小代码:
number_a = 0
number_b = 1
word = 'empty'
def something():
if number_a > number_b
word = 'hello'
else:
word = 'goodbye'
something()
print(word)
Run Code Online (Sandbox Code Playgroud)
Python 给我的输出是
empty
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?