Tag: django middleware

基于用户代理改变Django模板

我做了一个Django网站,但是我已经喝了Koolaid,我想要制作一个iPhone版本。 经过深思熟虑后,我提出了两个select: 做一个完整的其他网站,如i.xxxx.com。 使用Django的网站框架将其绑定到相同的数据库中。 找一些读取用户代理的中间件,并dynamic改变模板目录。 但是,我真的更喜欢选项#2。 我有一些保留,主要是因为Django的文档不能dynamic改变设置 。 我find了一个可以做我想要的片段 。 我的主要问题是让它尽可能无缝,我希望它是自动的,对用户是透明的。 有没有其他人遇到同样的问题? 有人会关心分享他们如何解决使Django网站的IPhone版本? 更新 我与中间件的组合,并调整模板调用。 对于中间件,我使用minidetector 。 我喜欢它,因为它检测到大量的移动用户代理。 我所要做的就是在我的意见中检查request.mobile。 对于模板调用调整: def check_mobile(request, template_name): if request.mobile: return 'mobile-%s'%template_name return template_name 我用这个任何观点,我知道我有两个版本。 去做: 弄清楚如何在render_to_response的扩展版本中访问request.mobile ,所以我不必使用check_mobile('template_name.html') 如果不存在移动版本,则使用以前的自动回退到常规模板。

Django启动代码在哪里?

我想在服务器启动(包括开发和生产)上执行这些代码行: from django.core import management management.call_command('syncdb', interactive=False) 把它放在settings.py中不起作用,因为它需要已经加载的设置。 将它们放在视图中并从外部访问该视图也不起作用,因为有一些使用数据库的中间件,这些中间件会失败,不让我访问视图。 把它们放在一个中间件可以工作,但每次访问我的应用程序时都会调用它。 一个可能的解决scheme可能是创build一个完成所有工作的中间件,然后从MIDDLEWARE_CLASSES删除它,这样就不会再调用它了。 我能做到这一点,没有太多的猴子补丁?

如何在django中设置自定义中间件

我正在尝试创build中间件来select性地将kwarg传递给满足条件的每个视图。 问题是我找不到如何设置中间件的例子。 我已经看到了重写我想要的方法process_view的类: Class CheckConditionMiddleware(object): def process_view(self, request): return None 但是我把这个课程放在哪里? 我是否创build了一个中间件应用程序,并将其放入其中,然后在settings.middleware中引用它?