会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 691楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 692楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 693楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 694楼

代码:

from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


class TelephoneConverter(BaseConverter):
    regex = r"1[345789]/d{9}"


app.url_map.converters['tel'] = TelephoneConverter


@app.route('telephone/<tel:pnum>')
def my_telephone(pnum):
    return '您请求过来的电话号码值为:%s' % pnum


if __name__ == '__main__':
    app.run()

报错:

FLASK_APP = app.py

FLASK_ENV = development

FLASK_DEBUG = 0

In folder H:/python_exec/自定义URL

H:\python_virtualenv\flask_env\Scripts\python.exe -m flask run

 * Serving Flask app "app.py"

 * Environment: development

 * Debug mode: off

Traceback (most recent call last):

  File "h:\python37\lib\runpy.py", line 193, in _run_module_as_main

    "__main__", mod_spec)

  File "h:\python37\lib\runpy.py", line 85, in _run_code

    exec(code, run_globals)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\__main__.py", line 15, in <module>

    main(as_module=True)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 967, in main

    cli.main(args=sys.argv[1:], prog_name="python -m flask" if as_module else None)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 586, in main

    return super(FlaskGroup, self).main(*args, **kwargs)

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\core.py", line 782, in main

    rv = self.invoke(ctx)

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\core.py", line 1259, in invoke

    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\core.py", line 1066, in invoke

    return ctx.invoke(self.callback, **ctx.params)

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\core.py", line 610, in invoke

    return callback(*args, **kwargs)

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\decorators.py", line 73, in new_func

    return ctx.invoke(f, obj, *args, **kwargs)

  File "H:\python_virtualenv\flask_env\lib\site-packages\click\core.py", line 610, in invoke

    return callback(*args, **kwargs)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 848, in run_command

    app = DispatchingApp(info.load_app, use_eager_loading=eager_loading)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 305, in __init__

    self._load_unlocked()

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 330, in _load_unlocked

    self._app = rv = self.loader()

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 388, in load_app

    app = locate_app(self, import_name, name)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\cli.py", line 240, in locate_app

    __import__(module_name)

  File "H:\python_exec\自定义URL\app.py", line 19, in <module>

    @app.route('telephone/<tel:pnum>')

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\app.py", line 1315, in decorator

    self.add_url_rule(rule, endpoint, f, **options)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\app.py", line 98, in wrapper_func

    return f(self, *args, **kwargs)

  File "H:\python_virtualenv\flask_env\lib\site-packages\flask\app.py", line 1275, in add_url_rule

    rule = self.url_rule_class(rule, methods=methods, **options)

  File "H:\python_virtualenv\flask_env\lib\site-packages\werkzeug\routing.py", line 666, in __init__

    raise ValueError("urls must start with a leading slash")

ValueError: urls must start with a leading slash


Process finished with exit code 1


环境:

    pycharm2020.1

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 696楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 697楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 698楼

from flask import Flask,url_for
from flask_restful import Api,Resource,reqparse

app = Flask(__name__)
api = Api(app)


@app.route('/')
def hello_world():
    return 'Hello World!'


# Flask_RESTful的基本使用
# 定义一个类视图
class LoginView(Resource):
    def get(self):
        return {'flag':'no'}
    def post(self):
        return {'flag':'yes'}

# 映射url
# api.add_resource(LoginView,'/login/','/login2/')
api.add_resource(LoginView,'/login/','/login2/',endpoint='login')

with app.test_request_context():
    # print(url_for('loginview'))     # 如果不写endpoint,那么将会使用视图函数的名字的小写作为endpoint。
    print(url_for('login'))     # 如果指定endpoint,就用视endpoint的值来指定url。


# Flask_RESTful功能之参数验证    基本用法
class RegisterView(Resource):
    def post(self):
        # 用户名 uname
        # 1.创建一个解析器对象
        parse = reqparse.RequestParser()
        # 2.利用解析器对象   添加需要验证的参数   并指定验证规则
        parse.add_argument('uname',type=str,help='用户名不符合规则!!!',required=True,trim=True)
        # 3.利用解析器对象   进行验证    若正确,直接返回验证后合格的参数值,反之,抛异常信息给客户端
        args = parse.parse_args()
        # 若验证成功后,需要插入数据库
        print(args)
        return {'tips':'注册成功'}

api.add_resource(RegisterView,'/register/')


if __name__ == '__main__':
    app.run(debug=True)

请问,这里的请求方式为什么变成了“get”?


Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 703楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637