小编imj*_*uez的帖子

Django信号与重写保存方法

我在缠绕这个问题时遇到了麻烦.现在我有一些看起来像这样的模型:

 def Review(models.Model)
    ...fields...
    overall_score = models.FloatField(blank=True)

def Score(models.Model)
    review = models.ForeignKey(Review)
    question = models.TextField()
    grade = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

评论有几个"分数",整体分数是分数的平均值.保存评论或分数时,我需要重新计算total_score平均值.现在我正在使用重写的保存方法.使用Django的信号调度程序会有什么好处吗?

python django django-signals django-models

81
推荐指数
3
解决办法
2万
查看次数

基于User-Agent更改Django模板

我做了一个Django网站,但我喝了Koolaid,我想制作一个iPhone版本.经过深思熟虑,我提出了两个选择:

  1. 制作一个完整的其他网站,例如i.xxxx.com.使用Django的站点框架将其绑定到同一个数据库中.
  2. 找一些读取用户代理的中间件,并动态更改模板目录.

不过,我真的更喜欢选项#2; 我有一些保留意见,主要是因为Django文档不鼓励动态更改设置.我找到了一个可以做我喜欢的片段.我的主要问题是让它尽可能无缝,我希望它对用户来说是自动化和透明的.

还有其他人遇到同样的问题吗?是否有人愿意分享他们如何解决制作iPhone版Django网站的问题?

更新

我使用了中间件和调整模板调用的组合.

对于中间件,我使用了minidetector.我喜欢它,因为它检测到过多的移动用户代理.我所要做的就是在我的视图中检查request.mobile.

对于模板调用调整:

 def check_mobile(request, template_name):
     if request.mobile:
         return 'mobile-%s'%template_name
     return template_name
Run Code Online (Sandbox Code Playgroud)

我使用它来查看我知道我有两个版本的任何视图.

去做:

  • 弄清楚如何在render_to_response的扩展版本中访问request.mobile,这样我就不必使用check_mobile('template_name.html')
  • 如果不存在移动版本,则使用先前的自动回退到常规模板.

python django django-templates django-middleware mobile-website

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

Apache或lighttpd

对于开发,我使用本地LAMP堆栈,用于生产我正在使用MediaTemple的Django容器(我喜欢BTW).MT的容器使用lighthttpd.老实说,我从来没有任何其他经验.我一直使用Apache.我一直在做一些阅读:

这是问题:

  • 一个人有什么优势?
  • 难道有利于我在我的dev的设置使用lighthttpd?
  • 使用两者有什么关系?Linux.com文章讨论了如何 Apache中使用lighttpd .

apache django lighttpd

11
推荐指数
1
解决办法
2525
查看次数