在我下面的示例代码中,是否真的需要counter = 0,还是有更好的,更多Python的方式来访问循环计数器?我看到了几个与循环计数器相关的PEP,但是它们被推迟或被拒绝(PEP 212和PEP 281).
这是我的问题的简化示例.在我的实际应用程序中,这是通过图形完成的,整个菜单必须在每一帧重新绘制.但这表明它以简单的文本方式易于重现.
也许我还应该补充一点,我正在使用Python 2.5,尽管如果有特定于2.6或更高版本的方式我仍然感兴趣.
# Draw all the options, but highlight the selected index
def draw_menu(options, selected_index):
counter = 0
for option in options:
if counter == selected_index:
print " [*] %s" % option
else:
print " [ ] %s" % option
counter += 1
options = ['Option 0', 'Option 1', 'Option 2', 'Option 3']
draw_menu(option, 2) # Draw menu with "Option2" selected
Run Code Online (Sandbox Code Playgroud)
运行时,输出:
[ ] Option 0
[ ] Option 1 …
Run Code Online (Sandbox Code Playgroud) 我目前正在学习Django,我的一些模型有自定义方法来获取以特定方式格式化的值.是否可以使用我在定义为order_by()的模型中定义为属性的这些自定义方法之一的值?
这是一个演示如何实现属性的示例.
class Author(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=40)
email = models.EmailField(blank=True, verbose_name='e-mail')
def _get_full_name(self):
return u'%s %s' % (self.first_name, self.last_name)
full_name = property(_get_full_name)
def __unicode__(self):
return self.full_name
Run Code Online (Sandbox Code Playgroud)
有了这个模型,我可以做到:
>>> Author.objects.all()
[<Author: John Doh>, <Author: Jane Doh>, <Author: Andre Miller>]
>>> Author.objects.order_by('first_name')
[<Author: Andre Miller>, <Author: Jane Doh>, <Author: John Doh>]
Run Code Online (Sandbox Code Playgroud)
但我做不到:
>>> Author.objects.order_by('full_name')
FieldError: Cannot resolve keyword 'full_name' into field. Choices are: book, email, first_name, id, last_name
Run Code Online (Sandbox Code Playgroud)
在像这样的自定义属性上使用order_by的正确方法是什么?
我想知道Django 南部是否可以进行以下迁移并仍保留数据.
我目前有两个应用程序,一个叫做tv,一个叫做电影,每个都有一个VideoFile模型(这里简化):
电视/ models.py:
class VideoFile(models.Model):
show = models.ForeignKey(Show, blank=True, null=True)
name = models.CharField(max_length=1024, blank=True)
size = models.IntegerField(blank=True, null=True)
ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
电影/ models.py:
class VideoFile(models.Model):
movie = models.ForeignKey(Movie, blank=True, null=True)
name = models.CharField(max_length=1024, blank=True)
size = models.IntegerField(blank=True, null=True)
ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
因为两个videofile对象是如此相似,所以我想摆脱重复并在一个名为media的单独应用程序中创建一个新模型,该应用程序包含一个通用的VideoFile类并使用继承来扩展它:
媒体/ models.py:
class VideoFile(models.Model):
name = models.CharField(max_length=1024, blank=True)
size = models.IntegerField(blank=True, null=True)
ctime = models.DateTimeField(blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
电视/ models.py:
class VideoFile(media.models.VideoFile):
show = models.ForeignKey(Show, blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
电影/ models.py:
class VideoFile(media.models.VideoFile):
movie = …
Run Code Online (Sandbox Code Playgroud) 在Django中进行条件格式化的正确方法是什么?
我有一个包含日期字段的模型,我想显示一个记录列表,但是根据该日期字段的值为行着色.例如,匹配今天我希望为黄色的日期的记录,在今天之前我想要绿色的记录和在我想要红色之后的记录.
在Django的某个地方,您需要进行比较,将当前日期与记录中的日期进行比较.
我可以看到可以进行比较的三个不同的地方:
以下哪种方法是正确的Django方式呢?听起来像条件格式化会经常出现,并且由于您无法在模板中进行任意比较,因此需要一些其他解决方案.
这同样适用于更简单的格式规则,例如,如果我想显示学生成绩列表,我想让那些高于80%绿色和低于30%红色的那些.
有时,当您使用本地副本时,可能存储了您不希望提交的配置设置,并且忽略该文件是不切实际的,因为它还包含特定于应用程序的设置.
例如,Django settings.py文件包含数据库连接详细信息和项目设置,例如要加载的应用程序.
有没有办法在提交时清理这些类型的文件?有没有办法在结账时恢复自己的本地设置?
我目前的环境是Linux和命令行SubVersion
我试图将我在Video :: Filename Perl模块中找到的以下Perl正则表达式转换为Python 2.5.4正则表达式来解析文件名
# Perl > v5.10
re => '^(?:(?<name>.*?)[\/\s._-]*)?(?<openb>\[)?(?<season>\d{1,2})[x\/](?<episode>\d{1,2})(?:-(?:\k<season>x)?(?<endep>\d{1,2}))?(?(<openb>)\])(?:[\s._-]*(?<epname>[^\/]+?))?$',
Run Code Online (Sandbox Code Playgroud)
我也想使用命名组,我在Python中知道命名组的正则表达式扩展是不同的,但我对语法不是100%肯定.
这是我试过的:
# Python (not working)
r = re.compile(r'^(?:(?P<name>.*?)[\/\s._-]*)?(?P<openb>\[)?(?P<season>\d{1,2})[x\/](?P<episode>\d{1,2})(?:-(?:\kP<season>x)?(?P<endep>\d{1,2}))?(?(P<openb>)\])(?:[\s._-]*(?P<epname>[^\/]+?))?$')
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
raise error, v # invalid expression
sre_constants.error: bad character in group name
Run Code Online (Sandbox Code Playgroud)
例如,这个我设法转换,它的工作原理.但上面的那个我似乎无法做对.我在Python中遇到了编译错误.
# Perl:
re => '^(?:(?<name>.*?)[\/\s._-]+)?(?:s|se|season|series)[\s._-]?(?<season>\d{1,2})[x\/\s._-]*(?:e|ep|episode|[\/\s._-]+)[\s._-]?(?<episode>\d{1,2})(?:-?(?:(?:e|ep)[\s._]*)?(?<endep>\d{1,2}))?(?:[\s._]?(?:p|part)[\s._]?(?<part>\d+))?(?<subep>[a-z])?(?:[\/\s._-]*(?<epname>[^\/]+?))?$',
# Python (working):
r = re.compile(r'^(?:(?P<name>.*?)[\/\s._-]+)?(?:s|se|season|series)[\s._-]?(?P<season>\d{1,2})[x\/\s._-]*(?:e|ep|episode|[\/\s._-]+)[\s._-]?(?P<episode>\d{1,2})(?:-?(?:(?:e|ep)[\s._]*)?(?P<endep>\d{1,2}))?(?:[\s._]?(?:p|part)[\s._]?(?P<part>\d+))?(?P<subep>[a-z])?(?:[\/\s._-]*(?P<epname>[^\/]+?))?$')
Run Code Online (Sandbox Code Playgroud)
我不知道从哪里开始寻找.
如何将Excel工作表中的数据加载到我的Django应用程序中?我正在使用数据库PosgreSQL作为数据库.
我想以编程方式执行此操作.客户希望每周在网站上加载两个不同的列表,他们不希望在管理部分中执行此操作,他们只想从Excel工作表中加载列表.请帮忙,因为我在这里有点新鲜.
也许我首先应该对我想完成的事情有所了解,因为可能会有更好的解决方案。
我有一个使用Django的网络应用程序,用于管理媒体(录制的电视,电影等)。该Web应用程序允许您将元数据添加到媒体中,例如您在每个用户的基础上观看的内容,还可以执行搜索并与Web资源同步以获取有关放映时间等信息。
实际的媒体文件位于文件服务器上,Django系统可以访问该文件服务器来扫描和更新其数据库。
我也有几个媒体播放系统,它们可以播放文件服务器中的媒体文件,并且前端使用Python编写。
该前端需要元数据来显示用户界面。当前,我正在使用Django创建以XML格式显示数据的视图,然后使用urllib2在前端检索页面。
我真正想要的是一种访问Django ORM的方法,该方法可以直接从媒体播放系统管理媒体元数据,这样我就可以拥有完整的ORM。
所以,最后回到我的问题。有没有办法以独立方式远程访问ORM?我想我可以将模型复制到前端系统,然后将它们全部直接访问数据库,但是必须有一个更优雅的解决方案。
python ×6
django ×5
django-south ×1
excel ×1
for-loop ×1
formatting ×1
loops ×1
migration ×1
orm ×1
perl ×1
postgresql ×1
regex ×1
svn ×1