Flask框架(二)——路由详解

文章目录


前言

        本文主要是介绍对路由的理解、路由的两种形式,无参和有参、路由参数的类型。


提示:以下是本篇文章正文内容,下面案例可供参考

一、路由是什么?

        路由就是将客户端发送过来的请求分发到指定的函数上,而Flask项目中的路由是通过装饰器对应视图函数,并且可以接收参数。两种形式如下:

  • 无参数传递的路由

@app.route('/rule/')

def index():

    return 'infdex'

  • 有参数传递的路由

@app.route('/string/<name>/')

def get_string(name):

    return name

二、路由参数类型

        Flask框架中的路由有6种常用的参数类型,如下图:

 

1.string类型

string类型是接收任何没有斜杠('/')的文件,其中路径就不行(因为有  '/')。

下面列举一个示例帮助理解

代码如下:

@app.route('/string/<string:name>/')

def get_string(name):

    print(type(name))  # <class str>

    return name

  • 当输入hello时,网页显示如下:

 

  •  当输入hello/123时,网页显示如下:

这就说明 如果输入的有斜杠就会报错,该类型是不能接收有斜杠的参数值。

2.int类型

int类型是接收整数,与string类型的写法是类似的。

注:return函数只能返回string, dict, list, tuple with headers or status, Response instance, or WSGI callable,不能是整数。

下面列举一个示例帮助理解

代码如下:

@app.route('/int/<int:id>/')

def get_int(id):

    print(type(id))  # <class str>

    return str(id)

当输入1234,网页显示如下: 

 

3、uuid类型

        uuid类型只接收uuid字符串,唯一码,一种生成规则,需要用到uuid4()这个函数生成一个唯一的uuid值,然后uuid类型的参数也只能接收这个生成的唯一的值。

下面列举一个示例帮助理解

代码如下:

@app.route('/uuid/<uuid:id>/')

def get_uuid(id):

    print(type(id))  # <class str>

    return 'uuid编码是'+str(id)

#注:其中的传递的id必须是get_uuid2函数获取到值

#id:08328028-8ab6-4835-a4d0-74567f91ddb1

#用来生成唯一码

@app.route('/getuuid/')

def get_uuid2():

    import uuid  #导入该包

    print(type(id))  # <class str>

    return str(uuid.uuid4())

 

生成的唯一码结果如下:

 

 

当输入这个唯一码时,传参结果如下:

 注:其中的传递的id必须是get_uuid2函数获取到值 

id:77341e9d-3b0c-4d4f-b639-5d6fdea64ed4 

 当输入其他字符时,网页结果如下:(结果报错了) 

4、 any类型

any类型是从列出的选择一个,可以做性别男女作为可选参数。

下面列举一个示例帮助理解:

代码如下:

@app.route('/any/<any(apple,orange,banana):fruit>/')

def get_any(fruit):

    print(type(fruit))  # <class str>

    return str(fruit)

 

 当输入any列出的任意一个时,结果如下:


 

当输入不在列出的这几个选项时,结果如下:(报错了)

 

 

 

 

总结

        以上就是今天学习内容,本文仅仅介绍了路由以及路由参数类型,通过列举示例帮助理解各个参数类型之间的区别和用法。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,我可以为您提供关于Python-Flask框架开发的图书管理系统的详细介绍和源码解析。这个系统是基于Flask框架的,可以帮助用户管理图书信息,包括添加、删除、修改和查询等功能。此外,系统还具有用户登录、注册、退出等功能,以确保数据的安全性和完整性。 系统的主要功能点如下: 1. 用户登录、注册、退出 2. 图书添加、删除、修改、查询 3. 图书分类管理 4. 用户权限管理 下面是系统的简要介绍: 1. 用户登录、注册、退出 用户需要先进行注册,注册成功后可以进行登录操作。登录成功后,用户可以进行图书管理操作。如果用户需要退出,可以点击退出按钮进行退出。 2. 图书添加、删除、修改、查询 用户可以在系统中添加图书信息,包括图书名称、作者、出版社、出版日期、价格等信息。用户还可以删除、修改和查询图书信息。查询支持按照图书名称、作者、出版社等条件进行查询。 3. 图书分类管理 用户可以对图书进行分类管理,包括新建分类、编辑分类和删除分类等操作。图书分类可以根据用户的需求进行自定义。 4. 用户权限管理 系统还具有用户权限管理功能。管理员可以对普通用户进行授权,授权后的用户可以进行添加、删除、修改和查询等操作。 下面是部分系统源码解析: 1. 登录操作 ``` @app.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(username=form.username.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('index')) flash('Invalid username or password.') return render_template('login.html', form=form) ``` 2. 图书添加操作 ``` @app.route('/add_book', methods=['GET', 'POST']) @login_required def add_book(): form = BookForm() if form.validate_on_submit(): book = Book(name=form.name.data, author=form.author.data, publisher=form.publisher.data, publish_date=form.publish_date.data, price=form.price.data) db.session.add(book) db.session.commit() flash('The book has been added.') return redirect(url_for('index')) return render_template('add_book.html', form=form) ``` 以上仅是系统源码的部分解析,系统的其他功能点和源码解析可以参考完整的源码和文档。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_7Ella

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值