精华内容
下载资源
问答
  • 本文实例讲述了flask框架视图函数用法。分享给大家供大家参考,具体如下: flask框架 视图函数当中 各种实用情况简单配置 1 建立连接 2 路由参数 3 返回网络状态码 4 自定义错误页面 5 重定向 6 正则url限制 和 url ...
  • 路由和视图函数基本概念

    千次阅读 多人点赞 2018-08-12 16:27:38
    一、路由和视图函数 1.什么叫路由?  客户端(例如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到python函数的映射...

    《FlaskWeb开发:基于python的Web应用开发应用》笔记一

    一、路由和视图函数

    1.什么叫路由?

        客户端(例如Web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到python函数的映射关系。处理URL和函数之间关系的程序称为路由

          在Flask 程序中定义路由的最简便方式,是使用程序实例提供的app.route 修饰器,把修饰的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由:

    @app.route('/')
    def index():
    return '<h1>Hello World!</h1>'

    2.什么叫响应和视图函数?

       前面的index()函数注册为程序跟地址的处理程序。如果部署程序的服务器域名为www.example.com,在浏览器中访问http://www.example.com后,会触发服务器执行index()函数,这个函数的返回值就称为响应,是客户端收到的内容。如果客户端是Web浏览器,响应就是显示给用户查看的文档。

        视图函数就是像index()这样的函数,视图函数返回的响应可以是包含HTML的简单字符串,也可以是复杂的表单。

    3.动态名字

          如果你仔细观察日常所用服务的某些URL 格式,会发现很多地址中都包含可变部分。例如, 你的Facebook 资料页面的地址是http://www.facebook.com/<your-­name>, 用户名(your-­name)是地址的一部分。Flask 支持这种形式的URL,只需在route 修饰器中使用特殊的句法即可。下例定义的路由中就有一部分是动态名字:

    @app.route('/user/<name>')
    def user(name):
    return '<h1>Hello, %s!</h1>' % name

    尖括号中的内容就是动态部分,任何能匹配到静态部分的URL都会映射到这个路由上。调用视图函数时,Flask会将动态部分作为参数传入函数。

    二、启动服务器

    程序实例用run 方法启动Flask 集成的开发Web 服务器:

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

           __name__=='__main__' 是Python 的惯常用法,在这里确保直接执行这个脚本时才启动开发Web 服务器。如果这个脚本由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行app.run()。

           服务器启动后,会进入轮询,等待并处理请求。轮询会一直运行,直到程序停止,比如按Ctrl-C 键。

    展开全文
  • Django视图函数的使用

    千次阅读 2019-01-22 19:00:37
    (1)定义视图函数request 参数必须有。是一个HttpRequest类型的对象。参数名可以变化,但不要更改。 (2)配置url 建立url和视图函数之间的对应关系 2.url配置的过程 (1)在项目的urls文件中包含具体应用的urls...

    1.使用

    (1)定义视图函数
    request 参数必须有。是一个HttpRequest类型的对象。参数名可以变化,但不要更改。

    (2)配置url

    建立url和视图函数之间的对应关系

    2.url配置的过程

    (1)在项目的urls文件中包含具体应用的urls文件,在具体应用的urls文件中包含具体url和视图的对应关系。

    (2)url配置项是定义在一个名叫urlpatterns的列表中,其中的每一个元素就是一个配置项,每一个配置项都调用url函数。

    回顾案例:test3

    (1)进入虚拟环境, 创建项目,创建应用

    Django视图函数的使用

    (2)在项目settings.py 文件INSTALLEN_APPS注册应用

    Django视图函数的使用

    在TEMPLATES注册模板路径,新建templates文件夹
    Django视图函数的使用

    在DATABASES使用MySQL
    Django视图函数的使用

    (3)在项目init.py文件导入MySQL

    Django视图函数的使用

    (4)新建html文件

    Django视图函数的使用

    (5)在项目文件urls.py包含应用url

    Django视图函数的使用

    (6)在应用文件夹新建urls.py文件,正则匹配,调用views的函数

    Django视图函数的使用

    (7)应用views.py的函数渲染html

    Django视图函数的使用

    (8)启动项目
    Django视图函数的使用

    (9)输入地址

    Django视图函数的使用

    3.url匹配过程

    Django视图函数的使用

    4.错误视图

    (1)404:找不到页面,关闭调试模式之后,默认会显示一个标准的错误页面,如果要显示自定义的页面,则需要的templates目录下面自定义一个404.html文件

    Django视图函数的使用

    (a)url没有配置

    (b)url配置错误

    (2)500:服务器端的错误。

    Django视图函数的使用

    (a)视图出错

    网站开发完成需要关闭调试模式,在settings.py文件中:

    DEBUG=False

    ALLOWED_HOST=[' * ']

    Django视图函数的使用

    5.捕获url参数

    进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数。

    (1)位置参数

    参数名可以随意指定

    (a)捕获url参数,把组参数传给函数
    Django视图函数的使用

    (b)函数返回给浏览器
    Django视图函数的使用

    (c)输入
    Django视图函数的使用

    (2)关键字参数:在位置参数的基础上给正则表达式组命名即可

    ?P<组名>

    关键字参数,视图中参数名必须和正则表达式组名一致

    (a)捕获
    Django视图函数的使用

    (b)函数返回给浏览器,组名和函数的变量要同名
    Django视图函数的使用

    (c)输入
    Django视图函数的使用

    6.普通登录案例

    过程:

    Django视图函数的使用

    (1)显示出登录页面

    (a)设计url,通过浏览器访问 http://127.0.0.1:8000/login 显示登录页面

    (b)设计url对应的视图函数login

    Django视图函数的使用

    (c)编写模板文件 login.html,action:跳转页面
    Django视图函数的使用
    Django视图函数的使用

    (2)登录校验

    (a)QueryDict类型的使用,类似字典
    Django视图函数的使用
    Django视图函数的使用

    (b)views.py的校验函数

    Django视图函数的使用

    (c)属性

    Django视图函数的使用

    7.ajax请求

    (1)原理

    Django视图函数的使用

    (2)过程

    Django视图函数的使用

    (3)创建静态目录,项目下添加static文件夹,包括js,css,images文件夹

    Django视图函数的使用

    (4)创建test_ajax.html

    Django视图函数的使用

    (5)在views.py设test_ajax.html渲染函数,返回值
    Django视图函数的使用

    (6)在urls.py添加ajax请求地址
    Django视图函数的使用

    (7)第一次全刷新,第二次部分刷新
    Django视图函数的使用

    8.ajax同步和异步

    Django视图函数的使用

    默认异步,不等返回信息一直往下执行

    同步,设置'async':false ,等待信息返回再执行

    转载于:https://blog.51cto.com/13742773/2345553

    展开全文
  • 视图函数和视图类

    千次阅读 2020-03-20 08:18:09
    文章目录视图函数和视图类一、 视图函数1.1 endpoint简介1.2 装饰器注册路由源码浅析1.3 另一种注册路由的方式---app.add_url_rule()1.4 ...之前我们已经了解过了视图函数的大概用法,本节深入了解一下视图函数 ...

    视图函数和视图类

    一、 视图函数

    之前我们已经了解过了视图函数的大概用法,本节深入了解一下视图函数

    img

    1.1 endpoint简介

    endpint参数是写在注册路由的装饰器中的一个参数,学名叫端点,我们可以理解为函数的别名。原来我们翻转视图函数的url的时候是直接通过是如函数的名字,如url_for('函数名'),现在我们可以指定一个endpoint='fbv'参数来进行翻转url。如果不指定endpoint,默认就以函数名作为端点名。

    实例:

    @app.route('/fbvtest/',methods=['GET','POST'],endpoint='fbv')  
    def fbvtest():
        url_demo = url_for('fbv')
        return '利用视图函数别名翻转的url为:{}'.format(url_demo)
    

    img

    关键词:

    • 利用@app.route()endpoint='fbv'参数可以自由指定端点名,url_for可以根据指定的端点名进行翻转。

    1.2 装饰器注册路由源码浅析

    (1) 首先写一个小视图函数

    #注册装饰器的原理
    #1 v = app.route('/source_code_demo/',endpoint='source_code')
    #2 v(source_code_demo)
    @app.route('/source_code_demo/',endpoint='source_code')
    def source_code_demo():
    
        return 'source_code_demo'
    

    (2) 查看app.route()源码

        ... 
        def route(self, rule, **options):
        ...
             def decorator(f):
                    endpoint = options.pop('endpoint', None)
                    self.add_url_rule(rule, endpoint, f, **options)
                    return f
                return decorator
    

    解析:

    • ,发现route()返回的是decorator函数地址,然后基于语法糖和装饰器的原理,decorator会加括号运行,像这样decorator(source_code_demo)
    • decorator函数中首先取出endpoint,然后运行self.add_url_rule(rule, endpoint, f, **options)
    • 所以 self.add_url_rule(rule, endpoint, f, **options)就是注册路由的核心

    (3) 点进self.add_url_rule(rule, endpoint, f, **options)查看源码,

    再点进_endpoint_from_view_func(view_func)查看源码

      ...
        
      @setupmethod
      def add_url_rule(self, rule, endpoint=None, view_func=None,
                         provide_automatic_options=None, **options):
            
      ...
    
           if endpoint is None:
                endpoint = _endpoint_from_view_func(view_func)
            options['endpoint'] = endpoint
            methods = options.pop('methods', None)
    
            # if the methods are not given and the view_func object knows its
            # methods we can use that instead.  If neither exists, we go with
            # a tuple of only ``GET`` as default.
            if methods is None:
                methods = getattr(view_func, 'methods', None) or ('GET',)
                
            ...
    
    def _endpoint_from_view_func(view_func):
        """Internal helper that returns the default endpoint for a given
        function.  This always is the function name.
        """
        assert view_func is not None, 'expected view func if endpoint ' \
                                      'is not provided.'
        return view_func.__name__
    

    解析:

    • 由上述代码我们可以直到如果没有指定endpoint,我们调用了 _endpoint_from_view_func()
    • 观察_endpoint_from_view_func函数我们可以知道,返回了视图函数的名字给了endpoint赋值
    • methos没有指定会给methos赋默认值('GET',)

    小结:

    1. self.add_url_rule(rule, endpoint, f, options)就是注册路由的核心
    2. 观察_endpoint_from_view_func函数我们可以知道,返回了视图函数的名字给了endpoint赋值
    3. methos没有指定会给methods赋默认值('GET',)

    img

    1.3 另一种注册路由的方式—app.add_url_rule()

    通过看上一个小节写的源码,现在我们知道了app.route() 的核心就是self.add_url_rule(rule, endpoint, f, options)就是注册路由的核心。所以我们可以直接使用app.add_url_rule()的方式来注册路由。

    实例:

    def add_url_test():
    
        return '实现了add_url方式注册路由'
                     # url                       端点                 函数地址
    app.add_url_rule('/add_url_test/',endpoint='add_demo',view_func=add_url_test)
    

    img

    1.4 视图函数中添加自定义装饰器

    我们在平时的开发的过程中,很多需要权限验证的功能需要用到装饰器,下面的代码是如何在flask中实现一个装饰器。

    from flask import Flask, request
    from functools import  wraps
    
    app = Flask(__name__)
    
    def login_verify(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            user_name = request.args.get('user')
            password = request.args.get('password')
            if user_name == 'mark' and password == '123':
                return func(*args,**kwargs)
            else:
                return '请登录'
        return wrapper
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    @app.route('/my_info/')
    @login_verify
    def my_info():
        return '个人信息页面'
    

    关键词

    1. 装饰器一定要写在注册路由的下面,写在视图函数的上面。
    2. 装饰器内部一定要使用@wraps(func)方法,用于保护被装饰函数的属性。

    img

    二、 视图类

    2.1 视图类的基本写法

    from flask import Flask, views, request, url_for
    from functools import wraps
    
    def login_verify(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            user_name = request.args.get('user')
            password = request.args.get('password')
            if user_name == 'mark' and password == '123':
                return func(*args,**kwargs)
            else:
                return '请登录'
        return wrapper
    
    
    class CBVTest(views.MethodView):
    
        methods = ['GET','POST']  # 指定可以接收的方法有什么
        decorators = [login_verify,]  # 指定自定义的装饰器
    
        def get(self):
            print(url_for('cbvtest'))
            return 'cbv_get'
        def post(self):
            return 'cbv_post'
    app.add_url_rule('/cbvtest',view_func=CBVTest.as_view(name='cbvtest'),endpoint='end_demo')
    

    讲解:

    1. 首先从flask中导入 views

    2. 写一个类一定要继承 views.MethodView

    3. 在类中写methods = ['GET','POST'] 可以指定可接受的请求类型

    4. 在类中写decorators = [login_verify,]可以指定装饰器,第一个装饰器是最里层函数依次往后包裹

    5. 在类中写def get(self):用于获取get请求

    6. 在类中写def post(self):用于获取post请求

    7. 添加路由的方法使用

      app.add_url_rule(
          '路由',view_func=CBVTest.as_view(name='自定义一个端点名字'))
      

      其原理是CBVTest.as_view(name='自定义一个端点名字')会返回一个函数,name是为这个函数命的名字,可以通过这个函数进行分发请求等操作。

    img

    三、 详细讲解注册路由的参数:

    常用的参数

    @app.route和app.add_url_rule参数:
    rule, URL规则
    view_func, 视图函数名称
    endpoint = None, 名称,用于反向生成URL,即: url_for('名称')
    methods = None, 允许的请求方式,如:["GET", "POST"]
    

    不常用的参数(了解)

    (1) 对URL最后的 / 符号是否严格要求 strict_slashes = False

    strict_slashes = False
        '''
            @app.route('/index', strict_slashes=False)
            #访问http://www.xx.com/index/ 或http://www.xx.com/index均可
            @app.route('/index', strict_slashes=True)
            #仅访问http://www.xx.com/index
        '''
    

    (2) 重定向到指定地址redirect_to=“ ”

    @app.route("/",redirect_to='/home/')
    def index():
    
        return '根路径'
    
    @app.route("/home/")
    def admin_demo():
    
        return 'home路径'
    

    (3) 为函数提供默认参数值

    defaults = None, 默认值, 当URL中无参数,函数需要参数时,使用defaults = {'k': 'v'}
    

    **(4)**子域名设置subdomain=“ ”

    from flask import Flask,url_for
    
    app = Flask(__name__)
    app.debug = True
    '''
    先在hosts设置域名解析(就是在本机的hosts文件上编辑上域名对应ip的关系) 
    域名解析会先解析本地如果没有再解析dns服务器
    C:\Windows\System32\drivers\etc\hosts
    
    127.0.0.1 mark.com
    127.0.0.1 admin.mark.com
    
    '''
    app.config['SERVER_NAME'] = 'mark.com:5000' # 这个代表访问这个域名的时候要访问5000端口
    
    @app.route("/")
    def index():
    
        return '设置域名成功'
    
    @app.route("/admin_demo/",subdomain='admin')
    def admin_demo():
    
        return '设置子域名成功'
    
    '''
    在浏览器中访问主域名
    mark.com:5000/
    
    在浏览器中访问子域名
    admin.mark.com:5000/admin_demo/
    
    注意:后面跟的path路径部分正常写
    '''
    
    if __name__ == '__main__':
        app.run(host='127.0.0.1',port=5000) # 测试服务器不稳定,尽量手动制定ip和端口
    

    img

    img

    img

    展开全文
  • 1.返回的是response对象 2.返回的有一些附加信息 例如:context-type=text/html 这context-type是在http的headers中的 status:200,400,401 ...如果想当做普通字符串打印出来就需要返回的content-type=tex...

    1.返回的是response对象

    2.返回的有一些附加信息

    例如:context-type=text/html  这context-type是在http的headers中的

    status:200,400,401

    例如下面的代码返回的是空的,因为浏览器会解析html标签,但是我们标签里面没有内容所以无任何显示

    如果想当做普通字符串打印出来就需要返回的content-type=text/plain,如下图所示,需要导入flask的make_response


    现在我们在做一个有意思的测试(转发)

    可以看到直接转发到了bing的网站

    上面还有一种简单的写法就是如下图所示:

    上面我们用逗号分隔的形式其实是我们的flask的元组,当你返回为一个元组的时候flask内部还是会把它自动变成一个response对象的。在返回回去。


    改成下面这样,就是返回json格式的数据了,其实这就是web返回的本质,返回的本质都是都是字符串,只不过控制的因素在这个context-type,他控制了我们的客户端在接收到我们的返回的时候要怎么样的去解释我们的返回内容。

     

     

     

     

    展开全文
  • 本文实例讲述了Django框架视图函数。分享给大家供大家参考,具体如下: 视图函数即为处理HTTP请求的python函数。一般情况下,视图函数的功能是通过模型层对象处理数据,然后通过下面三种方式返回HTTP Response: ...
  • 什么是视图函数 视图函数主要负责逻辑的处理 必需要有一个形参 必需返回一个HttpResponse对象 视图函数的例子 小结 视图函数一定要有一个形参 形参就是请求对象 视图函数要有一个返回值 返回值是一个HttpResponse...
  • 一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。 响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 ...
  • 程序实例需要知道对每个 URL 请求运行哪些代码,所以保存了一个 URL 到 Python 函数的映射关系。处理 URL 和函数之间关系的程序称为路由。 在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route ...
  • Flask的路由和视图函数(简谈)

    千次阅读 2018-05-15 12:00:33
    程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个 URL 到 Python 函数的映射关系。处理URL和函数之间关系的程序称路由。在Flask定义路由的最简便方式,是使用程序实例提供的app。route修饰器,把修饰的...
  • 主要介绍了Flask框架实现给视图函数增加装饰器操作,结合实例形式分析了flask框架视图添加装饰器的具体操作方法及相关注意事项,需要的朋友可以参考下
  • flask中视图函数调用

    千次阅读 2018-09-27 11:57:34
    1.当网页访问视图函数时,装饰器先调用route方法,route中实现闭包装饰视图函数,调用self.add_url_rule(rule, endpoint, f, **options), def route(self, rule, **options): def decorator(f): endpoint = ...
  • flask -- 路由与视图函数

    千次阅读 2018-06-07 14:06:45
    在Flask框架中,路由 就表示为用户请求的URL找出其对应的处理函数之意。 在本节课程,我们将主要从以下几个方面讲解Flask框架中的路由: 如何为应用注册路由? 如何为路由指定其支持的HTTP方法? ...
  • 说明:都类似于java中的方法,将一组完成特定功能的逻辑语句包装起来,对外暴露...视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询或一个虚拟表。视图并不在数据库中存储数据值,数据库中只...
  • 主要介绍了Django中URL视图函数的一些高级概念,Django是Python重多人气框架中最为著名的一个,需要的朋友可以参考下
  • 视图函数

    千次阅读 2017-11-03 09:05:30
    本质就是一个函数视图的参数 一个HttpRequest实例通过正则表达式组获取的位置参数通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中如果处理功能过多,可以将函数...
  • 以函数的方式定义的视图称为函数视图,函数视图便于理解。... 代码如下: ...视图函数:处理注册&quot;&quot;&quot; #获取请求方法,判断是GET/POST请求 if request method == 'GET': #处理GE..
  • 要实现的功能:登陆验证后跳转到个人中心并显示当前...登陆视图 def login(request): if request.method=='POST': form=LoginForm(request.POST) email = request.POST.get('email') pwd = request.POST.get('p...
  • 通过session模块 session是一种类似于Cookies的东西,实现网页之间数据传递,是一个存储在服务器端的对象集合。...之后在返回songinfo页面的视图函数中获取id songid=request.GET.get('id')
  • django视图函数/类返回的数据格式

    千次阅读 2019-06-18 17:00:42
    (这里讲的是前后端不分离项目) 在Django中常返回的数据有三种字符串,网页和json类型。 1、返回字符串 ...def userinfo(request): print(request)#request是一个请求对象 return HttpResponse('...视图函数里的re...
  • SQL Server的视图函数

    千次阅读 2017-10-25 22:10:21
    3、理解常用内置函数的使用方法,掌握用户定义函数的使用方法。 4、要求学生在每次实验前,根据实验目的和内容设计出本次实验的具体步骤;在实验过程中,要求独立进行程序调试和排错,学会使用在线帮助和运用理论...
  • NULL 博文链接:https://baobeituping.iteye.com/blog/906087
  • Django中类视图函数视图

    千次阅读 2018-08-07 12:28:05
    一、为什么引入类视图? 以函数的方式定义的视图称为函数视图函数视图便于理解。但是遇到一个视图对应的路径提供了多种不同HTTP请求方式的支持时,便需要在一个函数中编写不同的业务逻辑,代码可读性与复用性都不...
  • 学习 游标 视图 自定义函数不二选择,我觉得看完之后学到东西了
  • 客户端通过URL(统一资源定位符)访问服务器上的特定资源,今天介绍如何使用flask完成到视图函数映射这一环节。一.基本用法@app.route( '/' )def hello_world():return 'Hello World!' 首先要用到的就是修饰器 @app...
  • __main函数内幕——从加载视图到执行视图 __main函数内幕——从加载视图到执行视图 __main函数内幕——从加载视图到执行视图
  • thinkPHP 视图中使用函数

    千次阅读 2018-08-07 16:27:13
    视图中使用函数 语法格式:{$变量|函数名1|函数名2=参数1,参数2....,###} 参数说明:$变量:模板变量 |:变量修饰符,函数名1:表需要使用的第一个函数函数名2:表需要使用的第一个函数 参数1,参数2:函数2的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 481,276
精华内容 192,510
关键字:

视图函数是什么