我用404错误处理程序创建了一个蓝图.但是,当我在蓝图的前缀下找到不存在的URL时,会显示标准的404页面而不是我的自定义页面.如何使蓝图正确处理404错误?
以下是一个演示该问题的简短应用程序.导航到http://localhost:5000/simple/asdf不会显示蓝图的错误页面.
#!/usr/local/bin/python
# coding: utf-8
from flask import *
from config import PORT, HOST, DEBUG
simplepage = Blueprint('simple', __name__, url_prefix='/simple')
@simplepage.route('/')
def simple_root():
return 'This simple page'
@simplepage.errorhandler(404)
def error_simple(err):
return 'This simple error 404', err
app = Flask(__name__)
app.config.from_pyfile('config.py')
app.register_blueprint(simplepage)
@app.route('/', methods=['GET'])
def api_get():
return render_template('index.html')
if __name__ == '__main__':
app.run(host=HOST,
port=PORT,
debug=DEBUG)
Run Code Online (Sandbox Code Playgroud) 我有 - 作为监听器http和https 转到服务器.Nginx配置为处理http + https的传入请求.证书有序.使用单独的服务器可以在https协议上对它们的查询结果完美运行.但是,当我使用代理nginx时, https没有从服务器和服务器Go获得响应
"http:来自127.0.0.1:54037的TLS握手错误:tls:第一条记录看起来不像是TLS握手
可能是什么问题呢?
客户去:
package main
import (
"net/http"
"log"
)
func HelloSSLServer(w http.ResponseWriter, req *http.Request) {
w.Header().Set("Content-Type", "text/plain")
w.Write([]byte("This is an example server.\n"))
// fmt.Fprintf(w, "This is an example server.\n")
// io.WriteString(w, "This is an example server.\n")
}
func main() {
http.HandleFunc("/", HelloSSLServer)
go http.ListenAndServe("192.168.1.2:80", nil)
err := http.ListenAndServeTLS("localhost:9007", "/etc/letsencrypt/live/somedomain/fullchain.pem", "/etc/letsencrypt/live/somedomain/privkey.pem", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Run Code Online (Sandbox Code Playgroud)
Nginx配置:
server …Run Code Online (Sandbox Code Playgroud) 有一个关于输入数据的示例。
\n\n{\n "status": "OK",\n "status_code": 100,\n "sms": {\n "79607891234": {\n "status": "ERROR",\n "status_code": 203,\n "status_text": "\xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"\n },\n "79035671233": {\n "status": "ERROR",\n "status_code": 203,\n "status_text": "\xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"\n },\n "79105432212": {\n "status": "ERROR",\n "status_code": 203,\n "status_text": "\xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"\n }\n },\n "balance": 2676.18\n}\nRun Code Online (Sandbox Code Playgroud)\n\n{\n "status": "OK",\n "status_code": 100,\n "sms": {\n "79607891234": {\n "status": "ERROR",\n "status_code": 203,\n "status_text": "\xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"\n },\n "79035671233": {\n "status": "ERROR",\n "status_code": 203,\n "status_text": "\xd0\x9d\xd0\xb5\xd1\x82 \xd1\x82\xd0\xb5\xd0\xba\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xbe\xd0\xbe\xd0\xb1\xd1\x89\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f"\n },\n "79105432212": {\n "status": "ERROR",\n "status_code": …Run Code Online (Sandbox Code Playgroud) #include <stdio.h>
FILE * Openfile(char *filename,char *mode, FILE *fp);
int main(){
FILE *fp=NULL;
char *filename = "simple_index.file";
char *openmode = "w";
printf("FP(before call function):%p\n", fp);
FILE *newfp = Openfile(filename, openmode, fp);
printf("FP(after call function): %p\nNEWFP: %p\n", fp, newfp);
return 0;
}
FILE * Openfile(char *filename,char *mode, FILE *fp){
printf((fp = fopen(filename, mode)) ? "Good opening %s file\n": "Error open %s file\n", filename);
return fp;
}
Run Code Online (Sandbox Code Playgroud)
结果:
FP(before call function):0x0
Good opening simple_index.file file
FP(after call function): 0x0
NEWFP: 0x800bc7140
Run Code Online (Sandbox Code Playgroud)
在使用函数打开调用 …