我试图在我的项目中包含外部python模块来处理会话.它被命名了gmemsess.py.它尝试在响应中添加Set-Cookie标头,并显示错误:
rh.response.headers.add_header('Set-Cookie','%s=%s; path=/;'%(name,self._sid))
AttributeError: HeaderDict instance has no attribute 'add_header'
Run Code Online (Sandbox Code Playgroud)
我阅读文档,一切似乎都没问题,但它不起作用.为什么会出现此错误?此外,我使用webapp2来管理子域.因为这个可能会出现问题吗?
鉴于这个简单的类:
class RenderResponseHandler(webapp2.RequestHandler):
def __init__(self):
self.nombreUsuario = obtenerUsuarioTablaUsuario().nombre if obtenerUsuarioTablaUsuario() else None
def doRender(self, tname='index.html',values = {}):
temp = os.path.join(os.path.dirname(__file__),
'templates/'+tname)
if not os.path.isfile(temp):
return False
self.nombreUsuario = obtenerUsuarioTablaUsuario().nombre if obtenerUsuarioTablaUsuario() else None
newval = dict(values)
newval['path'] = self.request.path
if nombreUsuario:
url_linktext = 'logout'
else:
url_linktext = 'login'
newval['url_linktext'] = url_linktext
newval['nombreUsuario'] = nombreUsuario
template = jinja_environment.get_template(tname)
outstr = template.render(newval)
self.response.out.write(outstr)
return True
def obtenerPagina(self, pOpcion = None, pMensajeInformacion = None):
opcion = pOpcion if pOpcion is not None else …Run Code Online (Sandbox Code Playgroud) 我一直在研究python很长一段时间,最近我决定开始学习Web开发方面的事情.我有PHP和PHP框架的经验,以及ruby,其中:
如何使用flask AND webapp2实现此目的?
我完整地阅读了文档和教程,但它让我非常困惑.我只想要一个文件,其中所有路由和它们应该如何处理都被设置,然后每个路由请求由它自己的模型(python文件)处理.
所有示例都会导致单个文件应用程序.
非常感谢你,真的.请以一种简单的方式亲切地教导.
我想获取已将请求发送到服务器的referer url.我在appengine上使用webapp2框架.
当我做:
def post(self, slug):
print self.request
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
OST /first/person/ HTTP/1.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Language: en-US,en;q=0.8 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 43 Content-Type: application/x-www-form-urlencoded Content_Length: 43 Content_Type: application/x-www-form-urlencoded Cookie: djdt=hide; csrftoken=09f29b2bfe9f51f16581bab7fe7c6f38; sessionid=49b995d954eae8d613cedc3f4e92a796 Host: 127.0.0.1:8080 Origin: http://127.0.0.1:8080 Referer: http://127.0.0.1:8080/person/1/
Run Code Online (Sandbox Code Playgroud)
这是清楚可见的 Referer: http://127.0.0.1:8080/person/1/
我只对引用者感兴趣,因此我试过:
referer = self.request.headers['Referer']
print referer
Run Code Online (Sandbox Code Playgroud)
它给出了输出:
False Status: 200 Content-Type: text/html; charset=utf-8 Content-Length: 0 Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)
获得的一种方法是根据请求进行字符串处理,但我相信会有更标准的东西.
或者我是否误解了破坏工作的方式?这是一个示例代码:
class TestHandler(BaseHandler):
def get(self):
counter = self.session.get('counter')
if not counter:
counter = 0
counter += 1
if counter > 5:
self.auth.unset_session()
else:
self.session['counter'] = counter
return self.response.write ( counter )
Run Code Online (Sandbox Code Playgroud)
会话工作,计数器计数,但任何会话没有被销毁或破坏它不会使值为空?
是否只破坏了像userid和sessionid这样的值,或者我是否完全忽略了这一点?谢谢.
我正在开发一个Google App Engine项目(python/webapp2),我有点担心滥用/垃圾邮件我正在创建的服务有大量请求.为了克服这种潜力,我的想法是限制应用程序某些部分在任何给定时间内每个IP地址允许的请求数.我目前的计划如下:
在每个请求我将:
我的问题是:
这是最好的方法吗?我在这里只是一个初学者,我想这样做会有相当多的开销,这可能是一个可能有更好解决方案的常见任务.有没有更好的方法来做这个资源密集度较低的方法?
我正在尝试使用严格的斜杠与webapp2重定向路由,我得到这个值错误 -
ValueError: Routes with strict_slash must have a name.
Run Code Online (Sandbox Code Playgroud)
这是我的一条路线的例子 -
RedirectRoute(r'/',handler=IndexHandler,strict_slash=True)
Run Code Online (Sandbox Code Playgroud)
如果我没有strict_slash位,它工作正常.
这是我的项目文件
Procfile
web: python main.py
Run Code Online (Sandbox Code Playgroud)
requirement.txt
webapp2==2.3
Run Code Online (Sandbox Code Playgroud)
main.py
import webapp2
class MainHandler(webapp2.RequestHandler):
def get(self):
self.response.write("hello")
app = webapp2.WSGIApplication([
('/', MainHandler)
], debug=True)
Run Code Online (Sandbox Code Playgroud)
仍然heroku发出应用程序错误
我的项目有什么问题?
我有一个用python + webapp2 + jinja2构建的表单.提交的所有值都显示为字符串.其中一个字段是多重选择,只有第一个选定的项目才会被提交.有没有办法让该字段作为所有选定值的数组提交.
我有html模板
<select name="some_list" multiple>
<option value="red">Red</option>
<option value="red">Blue</option>
<option value="red">Yellow</option>
</select>
Run Code Online (Sandbox Code Playgroud)
在python类中
some_list = []
some_list = self.request.get('some_list')
Run Code Online (Sandbox Code Playgroud) 我是webapp2的新手.我试图让自定义用户模型与身份验证系统兼容.但每次我的程序调用get_user_by_password时都会引发TypeError:无法连接'str'和'NoneType'对象.我甚至尝试用自定义模型运行某些elses应用程序,它也不会工作.例如,我在这个项目中得到了同样的错误https://gist.github.com/jgeewax/2942374.
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1535, in __call__
rv = self.handle_exception(request, response, e)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1529, in __call__
rv = self.router.dispatch(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1278, in default_dispatcher
return route.handler_adapter(request, response)
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 1102, in __call__
return handler.dispatch()
File "D:\STUDIA\Semestr 10\Praca Magisterska\Projekty\test\main.py", line 83, in dispatch
response = super(BaseHandler, self).dispatch()
File "C:\Program Files (x86)\Google\google_appengine\lib\webapp2-2.5.2\webapp2.py", line 572, in dispatch
return self.handle_exception(e, self.app.debug)
File "C:\Program Files …Run Code Online (Sandbox Code Playgroud)