python搭建网站并在服务器上部署,python如何建网站

  python搭建网站并在服务器上部署,python如何建网站

  Flask是一个用Python编写的web微框架,它允许我们使用Python语言快速实现一个网站或Web服务。本文参考Flask的官方文档,大部分代码引用自官方文档。

  先装烧瓶,我们来装烧瓶。最简单的方法是使用pip。

  安装flask,然后在pycharm中创建一个Flask项目。

  创建后,如图所示。

  其中app.py是我们的启动类。

  from Flask import Flask app=Flask(_ _ name _ _)@ app . route(/)def Hello _ World():返回 Hello World!If _ _ name _ _= _ _ main _ _ :在app.run()启动后,访问localhost:5000,我们应该能在浏览器上看到Hello world输出!

  使用注释@app.route,如果你知道Spring Web MVC,类似于他的requestmapping注释,将Web请求映射到特定的处理程序类和/或处理程序方法。Path变量如果想得到/article/1这样的路径参数,就需要使用path变量。变量的语法是/path/converter:varname。在path变量之前也可以使用可选的转换器。有以下转换器。

  使用string作为转换器的默认选项,接受string int除斜杠接受整数float接受浮点数路径类似于string,但可以接受string any与斜杠匹配的任何转换器uuid接受UUID字符串示例:

  @ app . route(/User/username )def show _ User _ profile(username):# show该用户的用户配置文件return User % s % username @ app . route(/post/Int:post _ id )def show _ post(post _ id):#显示给定id的帖子,id为整数return post% d% post _ id构造url在Web程序中,经常需要获取页面的URL,在Flask中,需要使用url_for (method name )来构造相应方法的URL。

  示例:

  从flask导入Flask,URL _ for app=Flask(_ _ name _ _)@ app . route(/).定义索引():通过.@app.route(/login ).def login():通过.@ app . route(/用户/用户名).定义配置文件(用户名):通过.with app.test_request_context():打印url_for(索引).打印url_for(登录).打印url_for(login ,next=/).打印url_for(个人资料,用户名=John Doe ).//登录/登录?Next=//user/John Doe url_for,每个人在浏览网页的时候都会有一个跳转。假设当我们写一个跳转时,我们使用url路径。当整个网站路径需要修改时,我们需要更改这些代码。如果我们使用url_for,修改量很小(通常不修改视图函数)。

  接下来,让我们看看url_for的用法:

  @ app . route(/post/list/page/)def my _ list(page):return my list print(URL _ for( my _ list ,page=1,count=2)) #构建的URL:/my _ list/1/?Count=2重定向重定向可以分为永久重定向和临时重定向。反映在页面上的操作就是浏览器会自动从一个页面跳转到另一个页面。例如,一个用户访问一个需要权限的页面,但是这个用户当前没有登录,所以我们应该把他重定向到登录页面。

  具体操作如下:

  从flask导入flask,request,redirect,Url _ for app=Flask(_ _ name _ _)@ app . route(/log in/)def log in():return 这是登录页面 @ app . route(/profile/)def profile():ifrequest . args . get( name ):return 个人中心页面 else:# redirect redirect return redirect(Url _ for( log in ))HTTP方法如果需要处理特定的HTTP方法,在Flask中也很容易,只需使用route的methods参数进行设置即可

  from flask import request @ app . route(/log in ,methods=[GET ,Post ])def log in():if request . method== Post :do _ the _ log in()else:show _ the _ log in _ form()Web程序中经常需要处理静态文件。在Flask中,需要使用url_for函数并指定静态端点名和文件名。在下面的示例中,实际的文件应该放在static/文件夹下。

  URL _ for (static ,filename= style.css )模板生成Flask默认使用Jinja2作为模板,Flask会自动配置Jinja模板,所以我们不需要任何其他配置。默认情况下,模板文件需要放在templates文件夹中。模板文件只是一个html文件,但其中的语句编写方式不同。和java的freemaker很像。

  要使用Jinja模板,只需要使用render_template函数,传入模板文件名和参数名即可。

  从flask导入render _ template @ app . route(/hello/)@ app . route(/hello/name )def hello(name=None):返回render_template(hello.html ,name=name)!来自Flask/title { % if name % } h1 hello { { name } }的doctype htmltitleHello!/h1 { % else % } h1你好,世界!/h1 { % endif % } log output Flask为我们预配置了一个记录器,我们可以直接在程序中使用它。这个记录器是一个标准的Python记录器,所以我们可以像配置标准记录器一样配置它。详情请参考。

  官方文件:https://docs.python.org/library/logging.html

  Python日志输出

  app . logger . debug( A value for debugging )app . logger . warning( A warning occured(% d apples),42)app . logger . error( A error occured )处理请求需要使用几个全局对象,比如Flask中的request,但是这些全局对象比较特殊。它们是Context Locals,实际上是Web上下文中局部变量的代理。虽然我们在程序中使用了全局变量,但是它们对于每个请求范围都是不同的变量。明白了这一点,就很简单了。

  对象请求对象是一个全局对象。利用它的属性和方法,我们可以很容易地从页面中获取参数。

  method属性返回HTTP方法的相似性,如post和get。表单属性是一个字典。如果数据是POST类型的表单,则可以从form属性中获取。下面是Flask的官方示例,演示了Request对象的方法和表单属性。

  from flask import request @ app . route(/log in ,methods=[ POST ])def log in():error=None if request . method== POST :if valid _ log in(request . form[ username ],request . form[ password ]):return log _ the _ user _ in(request . form[ username ])else:error= Invalid username/password #如果请求方法#为GET或凭据无效,则执行以下代码返回render_template(login.html ,error=error)

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: