
PythonWeb框架
PythonWeb框架学习笔记
Jhinhua
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Tornadao—WebSocket(聊天机器人)
目录逻辑 配置 页面 逻辑 import jsonimport requests # 第三方库,负责发起请求,需要安装: pip install requestsimport tornado.webimport tornado.ioloopimport tornado.optionsimport tornado.websocketfrom settings...原创 2020-03-24 13:11:39 · 262 阅读 · 0 评论 -
Tornadao—异步
目录tornado异步化 异步访问 tornado异步化 import timeimport tornado.webimport tornado.ioloopimport asyncioclass IndexHandler(tornado.web.RequestHandler): async def get(self): await asy...原创 2020-03-24 13:06:56 · 158 阅读 · 0 评论 -
Tornadao—用户验证
目录authenticated装饰器 get_current_user()方法 login_url设置 authenticated装饰器 '''使⽤这个装饰器包裹⼀个处理⽅法时,Tornado将确保这个⽅法的主体只有在合法的⽤户被发现时才会调⽤。'''class ProfileHandler(RequestHandler): @tornado.web.auth...原创 2020-03-24 13:01:47 · 213 阅读 · 0 评论 -
Tornadao—带XSRF请求
请求体携带_xsrf参数 新建⼀个⻚⾯xsrf.html:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>测试XSRF</title></head> <body> <a href="javascrip...原创 2020-03-24 12:58:27 · 174 阅读 · 0 评论 -
Tornadao—XSRF
目录开启XSRF保护 模板应用 非模板应用 开启XSRF保护 #要开启XSRF保护,需要在Application的构造函数中添加xsrf_cookies参数:app = tornado.web.Application( [(r"/", IndexHandler),], cookie_secret = "2hcicVu+TqShDpfsjMWQLZ0Mkq5NPEWS...原创 2020-03-24 12:56:35 · 210 阅读 · 0 评论 -
Tornadao—cookie
目录设置 获取 清除 设置 设置set_cookie(name, value, domain=None, expires=None, path='/',expires_days=None)参数名 说明name cookie名value cookie值domain 提交cookie时匹配的域名path 提交cookie时匹配的路径expirescookie...原创 2020-03-24 12:51:22 · 166 阅读 · 0 评论 -
Tornadao—模板语法(自定义函数)
自定义函数 def house_title_join(titles): return "+".join(titles)class IndexHandler(RequestHandler): def get(self): house_list = [ { "price": 398, "titles": ["宽窄巷⼦", "160平⼤空间", "⽂化保护区双地铁"], "sc...原创 2020-03-24 12:42:19 · 155 阅读 · 0 评论 -
Tornadao—模板语法(块)
块 我们可以使⽤块来复⽤模板,块语法如下:{% block block_name %} {% end %} {# 对模板index.html进⾏抽象,抽离出⽗模板base.html base.html #}<!DOCTYPE html><html><head> <meta charset="utf-8"> <me...原创 2020-03-24 12:46:15 · 282 阅读 · 0 评论 -
Tornadao—模板语法(函数)
函数 static_url()Tornado模板模块提供了⼀个叫作static_url的函数来⽣成静态⽂件⽬录下⽂件的URL。如下⾯的示例代码<link rel="stylesheet" href="{{ static_url("style.css") }}">这个对static_url的调⽤⽣成了URL的值,并渲染输出类似下⾯的代码:<link rel=...原创 2020-03-23 23:31:57 · 395 阅读 · 0 评论 -
Tornadao—模板语法(控制语句)
控制语句 可以在Tornado模板中使⽤Python条件和循环语句。控制语句以{\%和\%}包围,并以类似下⾯的形式被使⽤:{% if page is None %}或{% if len(entries) == 3 %} 控制语句的⼤部分就像对应的Python语句⼀样⼯作,⽀持if、for、while,注意end:{% if ... %} ... {% elif ......原创 2020-03-23 23:26:33 · 179 阅读 · 0 评论 -
Tornadao—模板语法(变量)
变量 <li class="house-item"> <a href=""><img src="/static/images/home01.jpg"></a> <div class="house-desc"> <div class="landlord-pic"><imgsrc="/static/imag...原创 2020-03-23 23:22:58 · 132 阅读 · 0 评论 -
Tornadao—模板路径+渲染
路径 使⽤模板,需要仿照静态⽂件路径设置⼀样,向web.Application类的构造函数传递⼀个名为template_path的参数来告诉Tornado从⽂件系统的⼀个特定位置提供模板⽂件,如:app = tornado.web.Application( [(r'/', IndexHandler)], static_path=os.path.join(os.path.di...原创 2020-03-23 23:19:45 · 255 阅读 · 0 评论 -
Tornadao—静态文件
目录static_path static StaticFileHandler static_path static_path我们可以通过向web.Application类的构造函数传递⼀个名为static_path的参数来告诉Tornado从⽂件系统的⼀个特定位置提供静态⽂件,如:app = tornado.web.Application( [(r'/', Ind...原创 2020-03-23 23:16:12 · 200 阅读 · 0 评论 -
Tornadao—接口与调用顺序
目录initialize() prepare() HTTP方法 调用顺序 initialize() 对应每个请求的处理类Handler在构造⼀个实例后⾸先执⾏initialize()⽅法。将路由映射中的第三个字典型参数会作为该⽅法的命名参数传递,如:class ProfileHandler(RequestHandler): def initialize(self,...原创 2020-03-23 23:07:42 · 269 阅读 · 0 评论 -
Tornadao—输出设置
目录set_header(name, value) set_default_headers() set_status redirect(url) send_error(status_code=500, kwargs) write_error(status_code, **kwargs) set_header(name, value) set_header(name, ...原创 2020-03-23 22:29:55 · 290 阅读 · 0 评论 -
Tornadao—输出
write(chunk) 将chunk数据写到输出缓冲区。我们可以像写⽂件⼀样多次使⽤write⽅法不断追加响应内容,最终所有写到缓冲区的内容⼀起作为本次请求的响应输出。如果chunk是字典,write⽅法可以将其序列化为字符串class IndexHandler(RequestHandler): def get(self): self.write("hello itcast...原创 2020-03-23 22:22:55 · 138 阅读 · 0 评论 -
Tornadao—正则提取uri
正则 tornado中对于路由映射也⽀持正则提取uri,提取出来的参数会作为RequestHandler中对应请求⽅式的成员⽅法参数。若在正则表达式中定义了名字,则参数按名传递;若未定义名字,则参数按顺序传递。提取出来的参数会作为对应请求⽅式的成员⽅法的参数。 import tornado.webimport tornado.ioloopimport tornado.ht...原创 2020-03-23 22:19:17 · 458 阅读 · 0 评论 -
Tornadao—请求方法
# 来实现⼀个上传⽂件并保存在服务器本地的⼩程序upload.pyimport tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.optionsfrom tornado.options import options, definefrom tornado.web import Reque...原创 2020-03-23 22:13:56 · 141 阅读 · 0 评论 -
Tornadao—输入
get_argument(name, default=_ARG_DEFAULT, strip=True)功能:从请求体和查询字符串中返回指定参数name的值,如果出现多个同名参数,则返回最后⼀个的值。get_arguments(name, strip=True)功能:从请求体和查询字符串中返回指定参数name的值,注意返回的是list列表(即使对应name参数只有⼀个值)。若未找到...原创 2020-03-23 22:05:24 · 134 阅读 · 0 评论 -
Tornadao—路由
路由 # coding:utf-8import tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.optionsfrom tornado.options import options, definefrom tornado.web import url, RequestHandler...原创 2020-03-23 22:01:16 · 138 阅读 · 0 评论 -
Tornadao—配置
命令行参数 import tornado.webimport tornado.ioloopimport tornado.httpserverimport tornado.options # 新导⼊的options模块tornado.options.define("port", default=8000, type=int, help="runserver on the give...原创 2020-03-23 21:56:10 · 173 阅读 · 0 评论 -
Tornadao—Hello Tornadao
编写第一个应用 1.在虚拟开发环境中执⾏:pip install tornado2.编写第⼀个torndao应⽤# hello.pyimport tornado.webimport tornado.ioloop#定义处理类型class IndexHandler(tornado.web.RequestHandler): #添加⼀个处理get请求⽅式的⽅法 def ...原创 2020-03-23 19:01:45 · 160 阅读 · 0 评论 -
Tornadao—httpserver+多进程
httpserver import tornado.webimport tornado.ioloopimport tornado.httpserver # 新引⼊httpserver模块class IndexHandler(tornado.web.RequestHandler): """主路由处理类""" def get(self): """对应http的get请求⽅式"""...原创 2020-03-23 21:50:35 · 292 阅读 · 0 评论 -
Django—类视图使用装饰器
类视图使用装饰器 def my_decorator(func): def wrapper(request, *args, **kwargs): print('自定义装饰器被调用了') print('请求路径%s' % request.path) return func(request, *args, **kwargs) return wrapperclass DemoView(Vi...原创 2020-03-23 13:20:39 · 144 阅读 · 0 评论 -
Django—View+分页
View class ArticlePulishView(View): def get(self,request): return HttpResponse("文章展示") @method_decorator(check_login) def post(self,request): return HttpResponse("发表文...原创 2020-03-22 21:57:38 · 417 阅读 · 0 评论 -
Django—CreateView
CreateView 重要属性:template_name 模板文件名fields指定的字段列表model关联模型名form_class表单类,如果没有设置会默认是模型名 class UserCreateView(CreateView): # template_name = 'userregister.html' # model = User # #...原创 2020-03-22 21:55:34 · 257 阅读 · 0 评论 -
Django—DetailView
DetailView SingleObjectMixinpk_url_kwarg 默认值pk,从请求路径中获取主键的值,请求路径中参数必须是命名组,组名必须和pk_url_kwarg的值一样slug_url_kwarg默认值是slug,从请求路径中获取查询参数sug的值,请求路径中参数必须是命名组,组名必须和slug_url_kwarg的值一样,如果参数中有pk_url_kwar...原创 2020-03-22 21:52:58 · 395 阅读 · 0 评论 -
Django—ListView
ListView MultipleObjectTemplateResponseMixin提供了模板文件名如果没有指定模板文件名,则默认模板文件名规则是:应用名/模型名_list.htmlMultipleObjectMixin核心类,提供了渲染模板所有需要的模型或查询结果集(不一定是QuerySet,可以是对象列表),分页。queryset属性用于渲染模板所需对象列表,也可以重写...原创 2020-03-22 21:51:24 · 740 阅读 · 0 评论 -
Django—基本视图-TemplateView
TemplateView TemplateView可以根据上下文渲染指定模板,返回响应对象。它继承了ContentMixin、View、TemplateResponseMixinContentMixin用于获取渲染模板的变量。你可以重写get_context_data方法返回模板渲染的参数TemplateResponseMixin 用于渲染模板template_name模板文...原创 2020-03-22 21:41:58 · 728 阅读 · 0 评论 -
Django—基本视图-View
根视图View类 @classonlymethod def as_view(cls, **initkwargs): """Main entry point for a request-response process.""" # 参数检查 for key in initkwargs: if key in cls.http_method_names: # 参数名不能是指定http...原创 2020-03-22 21:37:02 · 156 阅读 · 0 评论 -
Django——CBV
基本使用 与基于函数的视图相比具有一定的差异和优势:提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性内建的基于类的视图的层次结构:基本视图:view 、TemplateView、RedirectView通用显示视图:DetailView、ListView通用编辑视图:Fo...原创 2020-03-22 21:29:55 · 179 阅读 · 0 评论 -
Django—Log
配置 ADMINS = ( ('tom','*******@163.com'), ) #配置邮件 EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend' SERVER_EMAIL=EMAIL_HOST_USER LOGGING = { 'version': 1, 'disable_existing_log...原创 2020-03-22 18:58:23 · 160 阅读 · 0 评论 -
Django—Celery-使用
目录创建任务 调用 生成数据库表 启动worker 获取任务执行结果 定时,计划任务 创建任务 from celery import shared_taskimport time@shared_taskdef hello_celery(loop): for i in range(loop): print('hello') time.sleep(...原创 2020-03-22 18:53:15 · 357 阅读 · 0 评论 -
Django—Celery
安装 Celery 是⼀个 基于python开发的异步任务队列/基于分布式消息传递的作业队列安装pip install celerypip install celery-with-redis#django-celery-results库基于 Django ORM实现了结果存储后端pip install django-celery-resultssettings.pyAL...原创 2020-03-22 18:38:08 · 343 阅读 · 1 评论 -
Django—缓存
配置 # settings.pyCACHES = { 'default':{ 'BACKEND':'django.core.cache.backends.db.DatabaseCache', 'LOCATION':'my_cache_table', }}#⽣成缓存表python manage.py createcachetable # CACHES = {# 'de...原创 2020-03-22 18:11:33 · 166 阅读 · 0 评论 -
Django—MiddlewareMixin
配置 MIDDLEWARE = [ ······ ······ ······ 'App02.MyMiddleware.MyMiddleware',] 实现 import sysfrom django.http import HttpResponsefrom django.shortcuts import redirectf...原创 2020-03-22 17:58:25 · 2272 阅读 · 0 评论 -
Django—站点管理
配置 (1) 配置admin应⽤django.contrib.admin(2) 创建管理员⽤户python3 manage.py createsuperuser依次输⼊⽤户名->邮箱->密码->确认密码(3) 汉化LANGUAGE_CODE = 'zh-Hans'TIME_ZONE = 'Asia/Shanghai'(4) 在App/admi...原创 2020-03-22 17:36:02 · 127 阅读 · 0 评论 -
Django—文件上传
配置 1.表单注意表单的enctype的值需要设置为:enctype="multipart/form-data表单提交类型为POST2.存储路径在settings.py⽂件下添加如下代码#设置上传⽂件路径MDEIA_ROOT = os.path.join(BASE_DIR,'static/upload')3. ⽂件上传对象的属性和⽅法名称 说明file.name ...原创 2020-03-22 17:28:03 · 187 阅读 · 0 评论 -
Django—富文本编辑器
配置 # 安装 pip install django-tinymce配置(1) 配置settings文件在INSTALL_APPS 添加如下代码INSTALLED_APPS = [ ... 'App', 'tinymce',]#富⽂本编辑器的配置在settings.py下添加如下代码TINYMCE_DEFAULT_CONFIG = { 'theme':'...原创 2020-03-22 17:24:34 · 278 阅读 · 0 评论 -
Django—邮件发送+激活账户
配置 # smtp服务的邮箱服务器EMAIL_HOST = 'smtp.126.com'# smtp服务固定的端口是25EMAIL_PORT = 25#发送邮件的邮箱EMAIL_HOST_USER = 'xxxxxx@126.com'#在邮箱中设置的客户端授权密码EMAIL_HOST_PASSWORD = 'xxxxxxx'#收件人看到的发件人 <此处要和发送邮件...原创 2020-03-22 17:17:42 · 585 阅读 · 0 评论