老师,我这里提示已存在该虚拟环境,但是下面没有哪一行内容,该怎么调出来呢
local.request就是线程吗
我跟视频一样的代码 为什么加载时出现 jinja2.exceptions.TemplateNotFound: login.html 错误
cookie 在服务器端是怎么验证的?我能想到的是写代码获取到cookie的值,然后在数据库里查询
老师,我的 PyCharm 是 2020 版本的。现在出现了如下问题:
配置:
源码:
from flask import Flask app = Flask(__name__) @app.route('/debug') def hello_world(): a = 1 b = 0 c = a/b return 'Hello World!' if __name__ == '__main__': app.run()
错误信息:
问题:
当不配置 --host --port 的时候,浏览器可以正常访问,py 文件运行也不会出错。但是如果配置了这个,运行就会出现错误,提示是编码错误,但是为什么加了这个才会出现这个错误呢?麻烦老师帮忙看一下怎么解决,谢谢~
老师这里的可选参数的意思是不是,当发送信号中的参数被赋值的时候,返回到接收函数中的参数就是字典的形式,如果是没有赋值的就是打包成元组的形式返回。
#session练习 from flask import Flask,views,render_template,request,session,redirect,url_for app = Flask(__name__) app.secrect_key='sadsa' @app.route('/') def home(): return '欢迎光临' class LoginView(views.MethodView): def __jump(self,msg = None): return render_template('login.html',msg=msg) def get(self): msg = request.args.get('msg') return self.__jump(msg=msg) def post(self): uname = request.form.get('uname') pwd = request.form.get('pwd') if uname =='sxt' and pwd == '123': session['uname']=uname return render_template('index.html') return self.__jump(msg='输入信息错误!') @app.route('/index/') def index(): uname = session.get('uname') if uname: return render_template('index.html') else: return redirect(url_for('login',msg='请先登录')) app.add_url_rule('/login/',view_func=LoginView.as_view('login')) if __name__ == '__main__': app.run(debug=True)
其他功能都正常,就是输入账号密码不能进行跳转,没有报错,不知道怎么回事 sxt 123
老师,($id:Episode)后面传递参数时为什么是{"episode":"JEDI"}
local是线程,local.request就是请求的数据吗
# before_render_template的应用 #示例业务 加载视图之前 我们对数据过滤 屏蔽一些非法字符 的示例 #引用before_render_template 我们待会儿要用这个变量!来监听我们的逻辑函数 也就是在视图渲染之前把数据完成过滤 from flask import Flask,render_template,before_render_template,g app=Flask(__name__) #正常访问首页 @app.route('/') def index(): # data() #这里注册的data函数 是同样的功能 return render_template('index.html') def filer_msg(sender,template,context): #过滤信息函数 #曹操 中操非法! 把操换成* # def data(): #比如我们获取数据 加入到了g中 这里简单拿一个字符串测试 g.msg='曹操不啰嗦,一心要拿荆州!' #这里课堂老师说 他会自动调用 before_render_template.send() 方法 #所以不需要我们去写了 msg=g.get('msg') if msg: g.msg = msg.replace('操', '*') # 把操这个字符换成* 曹操非法了! 不准拿荆州! # before_render_template.connect(filer_msg) #执行信号监听 回调函数 在视图渲染前执行我们的逻辑! @app.route('/home/') def home(): # data() return render_template('home.html') #得到结果 是在home函数视图里面 曹操也被过滤了 if __name__=='__main__': app.run(debug=True) ''' html中调用 <body> <p>{{ g.msg }}</p> </body> 显示结果: 曹*不啰嗦,一心要拿荆州! #吐槽 可怜的曹操 名字都非法 '''
#总结 其实我们的数据过滤方法 放在任意一个函数里面 比如我们注释的上面的data() #但是每次视图渲染之前 都要调用data()这个函数 太麻烦了 # 所以选择用flask给我们提供的 视图渲染之前的钩子信号! 一次性帮我们解决了所有视图渲染之前的数据过滤 我的理解是 before_render_template这个钩子 视图渲染之前 相当于是vue中的DOM加载之前的生命周期函数beforMount 所以用法也往这个上面靠。
老师这个 **参数 的方法哪一章有教,有解释,想去了解下用法,这个视频他这里直接说这样做可以,但是没做详细说明,不太懂用法
?
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637