运行以下代码时(在Mac OS X 10.7的Mac上的Python 2.7.1中)
while True:
return False
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
SyntaxError: 'return' outside function
Run Code Online (Sandbox Code Playgroud)
我仔细检查了错误的标签和/或空格.当我使用推荐的4个缩进空格时,我可以确认代码因上述错误而失败.当返回被放置在其他控制语句内部时(例如,if,for等),也会发生这种情况.
任何帮助,将不胜感激.谢谢!
在Django中,如何创建仅对经过身份验证的用户可见的页面的单个缓存版本(对所有用户都相同)?
我希望缓存的页面仅供经过身份验证的用户使用(他们@login_required
在视图中使用).所有经过身份验证的用户都可以使用这些页面(例如,无需vary_on_headers
根据唯一用户进行设置).
但是,我不希望这些缓存页面对未经过身份验证的用户可见.
vary_on_headers
查看使用,但我不需要为每个用户单独缓存页面谢谢!
@login_required
@cache_page(60 * 60)
def index(request):
'''Display the home page'''
return render(request, 'index.html')
Run Code Online (Sandbox Code Playgroud)
# Add the below for memcache
MIDDLEWARE_CLASSES += (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
# Enable memcache
# https://devcenter.heroku.com/articles/memcache#using_memcache_from_python
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache'
}
}
Run Code Online (Sandbox Code Playgroud)
根据@Tisho的回答,我解决了这个问题
decorators.py
在我的应用中创建文件views.py
from functools import wraps
from django.views.decorators.cache import cache_page
from django.utils.decorators import available_attrs
def cache_on_auth(timeout): …
Run Code Online (Sandbox Code Playgroud) 如何使用python和lxml从html中删除类属性?
我有:
<p class="DumbClass">Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>
Run Code Online (Sandbox Code Playgroud)
我想要:
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>
Run Code Online (Sandbox Code Playgroud)
我已经检查了lxml.html.clean.Cleaner但是,它没有一个方法来去除类属性.safe_attrs_only=True
但是,您可以设置,这不会删除class属性.
重要的搜索结果似乎没有用.我认为class
在html和python中使用的事实进一步混淆了搜索结果.许多结果似乎也严格遵守xml.
我对其他提供人性化界面的python模块持开放态度.
非常感谢.
感谢@Dan Roberts在下面的回答,我提出了以下解决方案.为将来到达这里的人们提出尝试解决同样的问题.
import lxml.html
# Our html string we want to remove the class attribute from
html_string = '<p class="DumbClass">Lorem ipsum dolor sit amet, consectetur adipisicing elit</p>'
# Parse the html
html = lxml.html.fromstring(html_string)
# Print out our "Before"
print lxml.html.tostring(html)
# .xpath below …
Run Code Online (Sandbox Code Playgroud) 我如何解决ConnectionError: Too many heartbeats missed
芹菜?
[2013-02-11 15:15:38,513: ERROR/MainProcess] Error in timer: ConnectionError('Too many heartbeats missed', None, None, None, '')
Traceback (most recent call last):
File "/app/.heroku/python/lib/python2.7/site-packages/celery/utils/timer2.py", line 97, in apply_entry
entry()
File "/app/.heroku/python/lib/python2.7/site-packages/celery/utils/timer2.py", line 51, in __call__
return self.fun(*self.args, **self.kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/celery/utils/timer2.py", line 153, in _reschedules
return fun(*args, **kwargs)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/connection.py", line 265, in heartbeat_check
return self.transport.heartbeat_check(self.connection, rate=rate)
File "/app/.heroku/python/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 134, in heartbeat_check
return connection.heartbeat_tick(rate=rate)
File "/app/.heroku/python/lib/python2.7/site-packages/amqp/connection.py", line 837, in heartbeat_tick
raise ConnectionError('Too many heartbeats …
Run Code Online (Sandbox Code Playgroud) 尝试运行代码时使用Flask(0.8)和Werkzeug(0.8.1)app.run(debug=True)
得到下面描述的错误.使用时没有错误app.run()
错误
Traceback (most recent call last):
File "code2.py", line 9, in <module>
app.run(debug=True)
File "/<snip>/env/lib/python2.7/site-packages/Flask-0.8-py2.7.egg/flask/app.py", line 703, in run
run_simple(host, port, self, **options)
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/serving.py", line 587, in run_simple
from werkzeug.debug import DebuggedApplication
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/__init__.py", line 14, in <module>
from werkzeug.debug.tbtools import get_current_traceback, render_console_html
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/tbtools.py", line 19, in <module>
from werkzeug.debug.console import Console
File "/<snip>/env/lib/python2.7/site-packages/Werkzeug-0.8.1-py2.7.egg/werkzeug/debug/console.py", line 144, in <module>
class _InteractiveConsole(code.InteractiveInterpreter):
AttributeError: 'module' object has no attribute 'InteractiveInterpreter'
Run Code Online (Sandbox Code Playgroud)
代码(code.py)
from flask import Flask
app = …
Run Code Online (Sandbox Code Playgroud) 我对以下多个 Django settings.py 文件的处理方法是否合理(透明、安全等)?
我有一个settings.py
和一个settings_local.py
。settings.py
受版本控制,asettings_local.py
不受版本控制。最后settings.py
它会尝试导入settings_local.py
(如果可用)。
我对这种方法的理论是,我可以保留默认/安全设置settings.py
,然后简单地推送到生产环境进行部署。部署时,settings_local.py
不会出现,并且不会使用其仅限本地的设置。但是,当settings_local.py
存在本地工作并且使用其仅本地设置时。
DEBUG = False
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
# other settings...
try:
from settings_local import *
except ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
from settings import *
DEBUG = True
MIDDLEWARE_CLASSES += (
'debug_toolbar.middleware.DebugToolbarMiddleware',
)
# other settings...
Run Code Online (Sandbox Code Playgroud)
我对这种方法的担忧是它们都互相导入。我不认为这符合循环导入的条件,而是作为一个指标,表明在不同情况下人们会考虑合并这些文件。
settings_local.py
导入的原因settings.py
是这样我可以添加到已经定义的变量,同时遵守 DRY 原则,例如添加一个新条目MIDDLEWARE_CLASSES
而不完全重新定义它。
谢谢!
最终,我放弃了上述方法。对我来说,尝试解决这个问题是一个有趣且信息丰富的过程,但是,我的合并方法有太多缺点。
对于将来发现此问题的人们来说,最合适的方法可能是有关此主题的 wiki 页面中概述的解决方案之一,正如 @DrTyrsa …
如果您使用单个javascript文件来保存所有脚本,那么您在哪里放置仅适用于一个页面的脚本?
这可能是意见问题或"最佳实践",但我对其他人的意见感兴趣:
我正在项目中使用html5 Boilerplate.他们建议您将所有javascript放在一个文件中script.js
以提高速度和一致性.似乎合理.
但是,我有一些地理位置脚本只与单个页面相关,而不是其他页面.我是否应该违反惯例并将此脚本放在我依赖的javascript库调用下面的页面上?只需调用相关函数(位于script.js
)文件中,在它们所依赖的库的链接下面?
谢谢!
为什么jQuery的CDN提供的内容缺乏远期的过期标题?(或者,"我在这里做错了什么?")
我在web项目中使用jQuery和jQuery Mobile.为了服务这些脚本,我按照他们的指示使用jQuery的CDN .但是,我注意到这些资源是在没有远期过期标头的情况下提供的,这会阻止浏览器智能地缓存它们.
虽然jQuery服务器会响应304 Not Modified
,但这与expire头不同,否则完全否定了该请求.我意识到这里的简单答案是"因为他们没有",但是,我想知道为什么他们不这样做,如果有某种方式我可以提供这些内容,理想情况下来自CDN,具有远期未来的过期标题.
谢谢你的时间.
http://code.jquery.com/jquery-1.6.4.min.js
响应:
HTTP/1.1 304 Not Modified
Date: Wed, 16 May 2012 00:05:27 GMT
ETag: "9e68e84-16615-6ad9bfc0+gzip"
Last-Modified: Mon, 12 Sep 2011 22:55:03 GMT
Server: ECS (dca/532A)
Vary: Accept-Encoding
X-Cache: HIT
Run Code Online (Sandbox Code Playgroud)
https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js
响应:
HTTP/1.1 200 OK
age:134505
cache-control:public, max-age=31536000
content-encoding:gzip
content-length:32103
content-type:text/javascript; charset=UTF-8
date:Mon, 14 May 2012 10:45:15 GMT
expires:Tue, 14 May 2013 10:45:15 GMT
last-modified:Mon, 02 Apr 2012 18:24:28 GMT
server:sffe
status:200 OK …
Run Code Online (Sandbox Code Playgroud) 如何在node.js下将文件> 1.1 GB读入内存?
我正在尝试使用node.js下的topojson将> 1.1 GB的GeoJSON文件转换为TopoJSON格式.
$ topojson -o outfile.json larger_than_one_point_one_GB_input_file.json
Run Code Online (Sandbox Code Playgroud)
(以上适用于最大517 MB的文件)
导致以下错误
buffer.js:242
this.parent = new SlowBuffer(this.length);
^
RangeError: length > kMaxLength
at new Buffer (buffer.js:242:21)
at Object.fs.readFileSync (fs.js:200:14)
at /usr/local/share/npm/lib/node_modules/topojson/bin/topojson:61:26
at Array.forEach (native)
at Object.<anonymous> (/usr/local/share/npm/lib/node_modules/topojson/bin/topojson:60:8)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
Run Code Online (Sandbox Code Playgroud)
--max-stack-size=2147000000
--max_executable_size=2000
--max_new_space_size=2097152
--max_old_space_size=2097152
使用set_test_cookie
在Django视图不实际设置检测Cookie,我想不通为什么.
实际项目比这复杂得多,但是,错误在近乎空的项目中是可重现的.
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install django
(venv)$ django-admin.py startproject hellodjango .
(venv)$ python manage.py startapp polls
Run Code Online (Sandbox Code Playgroud)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'database.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3. …
Run Code Online (Sandbox Code Playgroud) 在我正在研究的烧瓶应用程序中,我使用美国州名作为URL结构的一部分.状态名称是从python字典中提取的,该字典将状态缩写与其各自的专有名称相链接,例如
state_dict = {"Alabama" : "AL", "Alaska" : "AK",...
Run Code Online (Sandbox Code Playgroud)
当状态名称没有空格时,这很好.例如,http://example.com/Alabama/
然而,当有问题的国家中有一个空间,它形成了一个可怜的URL.例如http://example.com/North%20Dakota/
我现在通过小心使用状态名称创建URL来使用类似于state=state.replace(' ', '_')
参数的东西来解决这个问题url_for()
.然而,它很麻烦,看起来很粗糙.
如何更好地使用状态名称作为URL的一部分,而不必每次都手动修改它们?如果解决方案也可用于将大写字母更改为小写,则为额外点.
我已经考虑将状态字典修改为url友好north_dakota
,North Dakota
但是,在创建要向用户显示的文本时,也会使用dict,并且可读性也很重要.
非常感谢你花时间陪伴!