小编Lop*_*sky的帖子

Starlette 的 url_for 不会在 Nginx 后面创建带有 https 方案的链接(通过 uvicorn)

我已经尝试了一切:

@斯塔莱特:

routes = [
    Mount("/static/", StaticFiles(directory=parent+fs+"decoration"+fs+"static"), name="static"),
    Route(....),
    Route(....),
]
Run Code Online (Sandbox Code Playgroud)

@Uvicorn:

--forwarded-allow-ips=domain.com
--proxy-headers
Run Code Online (Sandbox Code Playgroud)

@url_for:

_external=True
_scheme="https"
Run Code Online (Sandbox Code Playgroud)

@nginx:

proxy_set_header Subdomain $subdomain;
proxy_set_header Host $http_host;
proxy_pass http://localhost:7000/;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header   X-Real-IP $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header   X-Forwarded-Proto $scheme;
proxy_set_header   X-Forwarded-Host $server_name;
proxy_redirect     http://$http_host/ https://$http_host/;
include proxy_params;
server {
    if ($host = sub.domain.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80 ;
    listen [::]:80 ;
    server_name sub.domain.com;
    return 404; # managed by Certbot

}
Run Code Online (Sandbox Code Playgroud)

如果我打开 .css 或 .js …

nginx starlette uvicorn

7
推荐指数
1
解决办法
1939
查看次数

将文本预测脚本[马尔可夫链]从javascript转换为python

我一直在尝试将这个js脚本转换为python代码.

到目前为止,我的实现(主要是blindfull cp,这里和那里的一些小修复):

import random
class markov:
    memory = {}
    separator = ' '
    order = 2

    def getInitial(self):
        ret = []
        for i in range(0, self.order, 1):
            ret.append('')
        return ret

    def breakText(self, txt, cb):
        parts = txt.split(self.separator)
        prev = self.getInitial()
        def step(self):
            cb(prev, self.next)
            prev.shift()#Javascript function.
            prev.append(self.next)
        #parts.forEach(step) # - step is the function above.
        cb(prev, '')

    def learn(self, txt):
        mem = self.memory
        def learnPart(key, value):
            if not mem[key]:
                mem[key] = []
            mem[key] = value
            return mem …
Run Code Online (Sandbox Code Playgroud)

javascript python markov-chains

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

FastAPI 等效于 Flask 的 request.form,用于不可知的表单

我尝试从 Flask 迁移到 FastAPI,我想知道是否有类似于 Flask 的东西:

payload = request.form.to_dict(flat=False)
payload = {key:payload[key][0] for key in payload}
Run Code Online (Sandbox Code Playgroud)

对于 FastAPI。

到目前为止,我只发现了一些技巧,您是否仍然必须将表单的所有参数一一实现给函数:

from pydantic import BaseModel
class FormData(BaseModel):
    alfa: str=Form(...)
    vita: str=Form(...)
async def Home(request: Request, form_data:FormData)
Run Code Online (Sandbox Code Playgroud)

这个例子当然比标准的表单处理在可读性上更好:

async def Home(username: str = Form(...), something_else: str = Form(...)):
Run Code Online (Sandbox Code Playgroud)

但由于所有表单字段的必要声明,它仍然非常受限。

还有其他更不可知和优雅的方法吗?

提前致谢,如果这是我无法通过谷歌搜索找到的微不足道的问题,我深表歉意:)

html python forms flask fastapi

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

标签 统计

python ×2

fastapi ×1

flask ×1

forms ×1

html ×1

javascript ×1

markov-chains ×1

nginx ×1

starlette ×1

uvicorn ×1