小编use*_*534的帖子

Python ConfigParser:检查选项是否存在

我正在使用Python的ConfigParser来创建配置文件.我想检查某个部分是否定义了特定选项,如果有,则获取该值.如果没有定义选项,我只想继续没有任何特殊行为.似乎有两种方法可以做到这一点.

if config.has_option('Options', 'myoption'):
    OPTION = config.get('Options', 'myoption')
Run Code Online (Sandbox Code Playgroud)

要么:

try:
    OPTION = config.get('Options', 'myoption')
except ConfigParser.NoOptionError:
    pass
Run Code Online (Sandbox Code Playgroud)

一种方法比另一种方法更受欢迎吗?在if涉及较少的线路,但我偶尔读到try/ except在很多情况下被认为更Python.

python configparser

30
推荐指数
1
解决办法
2万
查看次数

将Python字典排列组合成字典列表

鉴于字典看起来像这样:

{
    'Color': ['Red', 'Yellow'],
    'Size': ['Small', 'Medium', 'Large']
}
Run Code Online (Sandbox Code Playgroud)

如何创建一个结合了第一个字典键的各种值的字典列表?我想要的是:

[
    {'Color': 'Red', 'Size': 'Small'},
    {'Color': 'Red', 'Size': 'Medium'},
    {'Color': 'Red', 'Size': 'Large'},
    {'Color': 'Yellow', 'Size': 'Small'},
    {'Color': 'Yellow', 'Size': 'Medium'},
    {'Color': 'Yellow', 'Size': 'Large'}
]
Run Code Online (Sandbox Code Playgroud)

python dictionary python-2.7

16
推荐指数
1
解决办法
4244
查看次数

Django通用视图:何时使用ListView与DetailView

我在博客应用程序中使用Django基于类的通用视图.我的一个视图显示了具有特定标记的帖子列表.我可以将此视图写ListView为帖子,按标签过滤.或者我可以将此视图编写为DetailView标记,并将相关帖子添加到上下文中.

一种方式比其他方式更合适 - 或Pythonic?

这种ListView方法似乎更具语义性,因为我想要的是一个帖子列表,但它也稍微复杂一些.它要求我覆盖两种方法.这种DetailView方法只需要我覆盖一种方法.

class PostTagView(ListView):
    """Display all blog posts with a given tag."""
    queryset = Post.objects.published()

    def get_context_data(self, **kwargs):
        context = super(PostTagView, self).get_context_data(**kwargs)
        context['tag'] = get_object_or_404(Tag, slug=self.kwargs['slug'])
        return context

    def get_queryset(self, **kwargs):
        queryset = super(PostTagView, self).get_queryset()
        return queryset.filter(tags__slug=self.kwargs['slug'])


class TagDetailView(DetailView):
    """Display all blog posts with a given tag."""
    model = Tag

    def get_context_data(self, **kwargs):
        context = super(TagDetailView, self).get_context_data(**kwargs)
        context['object_list'] = Post.objects.published().filter(tags__slug=self.kwargs['slug'])
        return context
Run Code Online (Sandbox Code Playgroud)

python django django-views django-generic-views

15
推荐指数
1
解决办法
8314
查看次数

Django似乎正在缓存datetime.now()

我有一个看起来像这样的模型:

class Item(models.Model):
    ...
    publish_date = models.DateTimeField(default=datetime.datetime.now)
    ...
Run Code Online (Sandbox Code Playgroud)

还有一个看起来像这样的经理:

from datetime import datetime

class ItemManager(Manager):
    def published(self):
        return self.get_query_set().filter(publish_date__lte=datetime.now()
Run Code Online (Sandbox Code Playgroud)

一个看起来像这样的视图:

class ItemArchive(ArchiveIndexView):
    queryset = Item.objects.published()
    date_field = 'publish_date'
Run Code Online (Sandbox Code Playgroud)

我的想法是,我可以调用Item.objects.published()并获取所有已发布的查询集Items.

问题是Django似乎datetime.now()在服务器启动时在管理器中执行调用,然后缓存该值.因此,如果今天是5月24日,并且我创建了Item一个发布日期为5月23日,并且在5月22日启动了服务器,那么5月23日的项目将不会显示在ItemArchive视图中.一旦我重新启动Apache,5月23日项目就会在视图中正确显示.

datetime.now()每次调用管理器时,如何强制Django执行?

python django datetime caching

5
推荐指数
1
解决办法
1299
查看次数

为特定文件类型设置vim updatetime

我想修改updatetime具有特定扩展名的文件的vim .我已尝试通过在我的行中添加以下行来完成此操作~/.vimrc:

autocmd BufRead,BufNewFile *.t set updatetime=60000
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.当我打开带有.t扩展名和类型的文件时,:set ut?我会看到默认值updatetime=4000.

vim

5
推荐指数
1
解决办法
2301
查看次数

在子域上提供Django管理站点

我有一个运行Django,uWSGI和Nginx的项目.目前我使用默认的Django管理站点,服务于example.com/admin.我想改变它,以便管理站点仅在admin.example.com.

做这个的最好方式是什么?

我曾经考虑过要开始一个全新的Django项目,admin.example.com但是使用与运行的项目相同的数据库设置example.com,但我希望有更优雅的东西,因为这会涉及在项目之间复制很多设置和应用程序.基本上两者之间的唯一区别是,安装了管理站点和URL模式,而不会安装.

(我的理由是最终想要使用google auth proxy之类的东西来保护管理站点,但是非管理员登录会通过正常的身份验证后端.看起来我可以通过指定Django使用HTTP Basic Auth来实现这一点admin.example.com,但坚持使用默认后端example.com.)

django nginx django-admin django-authentication uwsgi

3
推荐指数
1
解决办法
1857
查看次数