小编dsc*_*ose的帖子

neovim 自动缩进的细微差别

我刚刚从 vim 切换到 neovim。以下 vim 配置设置通过缩进获得我想要的行为:

\n
set tabstop=4\nset shiftwidth=4\nset softtabstop=4\nset autoindent\nset backspace=indent,eol,start\n
Run Code Online (Sandbox Code Playgroud)\n

这里的相关部分是自动缩进:

\n
set autoindent\n
Run Code Online (Sandbox Code Playgroud)\n

在每个换行符上,这会导致 vim 匹配上一行的缩进:

\n
def demo_autoindent():\n    a = 'This line was manually indented'\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\n
Run Code Online (Sandbox Code Playgroud)\n

的声明a手动缩进一步,但第二行自动缩进到同一级别。在这里,我用一系列\xc2\xb7字符表示自动缩进。

\n

Neovim 符合这种行为。然而,Neovim 试图在块方面变得更聪明,或者在本例中用 python 声明字典:

\n
def 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\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,Neovim 并未自动缩进该行。如果有,它将与 的声明具有相同的 4 个空格缩进b。相反,Neovim 额外添加了两个缩进,使总数达到 12 个空格。

\n

显然,它的目的是添加进一步的缩进:

\n
def example_neovim_intention():\n    c = {\n\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\n
Run Code Online (Sandbox Code Playgroud)\n

如何将 Neovim 配置为:

\n
    \n …

vim neovim

8
推荐指数
1
解决办法
1万
查看次数

如何将 docutils 文档树转换为 HTML 字符串?

我正在尝试使用 docutils 包将 ReST 转换为 HTML。这个答案简洁地使用了 docutils 的publish_*便利功能来一步实现这一点。我想转换的 ReST 文档有多个部分,我想在生成的 HTML 中将它们分开。因此,我想分解这个过程:

  1. 将 ReST 解析为节点树。
  2. 根据需要分离节点。
  3. 将我想要的节点转换为 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)

html python restructuredtext docutils

5
推荐指数
1
解决办法
1086
查看次数

如何测试 HTMX Get 请求?

我正在使用 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 请求以便测试我的片段逻辑?

testing django tdd http htmx

5
推荐指数
1
解决办法
1221
查看次数

在python 3中的方法中更改全局字符串

我用谷歌搜索了我的问题,但没有找到答案。我的问题是:我正在尝试在 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)

我在这里做错了什么?

python string methods definition

2
推荐指数
1
解决办法
3435
查看次数

标签 统计

python ×2

definition ×1

django ×1

docutils ×1

html ×1

htmx ×1

http ×1

methods ×1

neovim ×1

restructuredtext ×1

string ×1

tdd ×1

testing ×1

vim ×1