我喜欢为我的表添加前缀,以防我需要将应用程序安装到只有一个数据库的主机上.我想知道是否有一种使用PDO类处理表前缀的简单方法?
目前,我不得不覆盖我自己的数据库中的每个方法,用前缀替换%p,并调用super方法.这是有效的,但它不漂亮!
我有以下自定义包含标记:
from django.template import Library
from django.db.models import Count
register = Library()
@register.inclusion_tag('projects/work_part.html', takes_context=True)
def project_list(context):
return {'projects':context['projects']}
Run Code Online (Sandbox Code Playgroud)
我的设置如下:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'context_processors.default_processors',
)
Run Code Online (Sandbox Code Playgroud)
我需要在work_path.html模板中访问MEDIA_URL,但似乎上下文处理器不适用于自定义模板.
如何在模板标签中访问MEDIA_URL?我看到这篇文章:从自定义包含模板标签中访问STATIC_URL,但我没有使用STATIC_URL,是否有另外一组标签我应该加载?
我想知道是否有更短的方式编写以下代码:
<input type="text" name="username" value="<?if(isset($_POST['username'])){ echo $_POST['username']; }?>" />
Run Code Online (Sandbox Code Playgroud)
我讨厌必须这样做将我的所有形式,因为isset()检查真的搞砸了我的HTML并吓跑了前端.
有没有办法可以使用默认的django缓存框架无限期地设置缓存密钥?我尝试将超时设置为0,但不幸的是,这根本没有设置密钥.
我有一个通用内联,将其附加到某些模型。它工作正常,但管理界面看起来有点丑陋:
http://i.stack.imgur.com/dI3UH.png
如您所见,相同的标题重复了几次。在这种情况下,我只会向内联添加一个条目,我的设置如下:
class PageMetaInline(generic.GenericStackedInline):
model = PageMeta
extra = 1
max_num = 1
Run Code Online (Sandbox Code Playgroud)
有什么方法可以删除不必要的标题“ Page Meta:#1”?
我试图从具有动态名称的文件中导入一个类.这是我的文件导入程序:
def get_channel_module(app, method):
mod_name = 'channel.%s.%s' % (app, method)
module = __import__(mod_name, globals(), locals(), [method])
return module
Run Code Online (Sandbox Code Playgroud)
这会导入特定的python文件,例如some_file.py,如下所示:
class SomeClassA(BaseClass):
def __init__(self, *args, **kwargs):
return
class SomeClassB():
def __init__(self, *args, **kwargs):
return
Run Code Online (Sandbox Code Playgroud)
我想要做的只是从导入的文件中返回扩展BaseClass的类,所以在这个实例中,SomeClassA.有没有办法做到这一点?
我需要在字符串中搜索多个单词.
import re
words = [{'word':'test1', 'case':False}, {'word':'test2', 'case':False}]
status = "test1 test2"
for w in words:
if w['case']:
r = re.compile("\s#?%s" % w['word'], re.IGNORECASE|re.MULTILINE)
else:
r = re.compile("\s#?%s" % w['word'], re.MULTILINE)
if r.search(status):
print "Found word %s" % w['word']
Run Code Online (Sandbox Code Playgroud)
出于某种原因,这只会找到"test2"而从不"test1".为什么是这样?
我知道我可以使用| 划分搜索,但可能有数百个单词,这就是我使用for循环的原因.
我有以下文件夹结构:
- MyProject
- App1
- some_module1.py
- some_module2.py
- App2
- some_other_module1.py
- some_other_module2.py
Run Code Online (Sandbox Code Playgroud)
在每个模块(例如some_module1.py)中,有一个类从基类扩展,在我的例子中是Producer.
我想要做的是在这个类中动态加载.为此,我有一个"已安装的应用程序"列表,如下所示:
INSTALLED_APPS = (
'App1',
'App2',
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个函数来检查特定生成器类的每个"app"包,并确保它从生成器基类扩展.像这样的东西:
module_class = 'some_module1.SomeClass'
# Loop through each package in the INSTALLED_APPS tuple:
for app in INSTALL_APPS:
try:
#is the module_class found in this app?
#App1.some_module1.SomeClass - Yes
#App2.some_module1.SomeClass - No
# is the class we found a subclass of Producer?
exception ImportError:
pass
Run Code Online (Sandbox Code Playgroud)
我尝试过使用imp和importlib,但它似乎没有处理这种导入.无论如何我能够做到这一点吗?
我试图从一些文本中删除所有特殊字符,这是我的正则表达式:
pattern = re.compile('[\W_]+', re.UNICODE)
words = str(pattern.sub(' ', words))
Run Code Online (Sandbox Code Playgroud)
超级简单,但不幸的是,当使用撇号(单引号)时它会导致问题.例如,如果我有"不"字样,则此代码返回"doesn".
有没有办法调整这个正则表达式,以便它不会删除这样的实例中的撇号?
编辑:这是我所追求的:
Run Code Online (Sandbox Code Playgroud)doesn't this mean it -technically- works?
应该:
这不意味着它在技术上有效
我在让django压缩器与CloudFront一起工作时遇到了一些麻烦.我正在运行offline compress命令来生成我的压缩文件和manifest.json文件.在此之后,我运行collectstatic将压缩文件上传到我的S3存储桶.
然后从CloudFront提供这些静态文件,因此我的设置如下所示:
STATIC_ROOT = ''
STATIC_URL = 'http://<my-cloudfront-domain>/somebucket/'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
COMPRESS_OFFLINE = True
Run Code Online (Sandbox Code Playgroud)
问题是,CloudFront正在提供旧版本的manifest.json,这意味着压缩器正在抛出一个OfflineGenerationError.
即使有一个缓存后端,我担心如果缓存服务器出于某种原因离线/刷新我的清单文件将是不正确的.
我在这里遗漏了一些东西以确保我没有遇到OfflineGenerationError吗?