是否可以根据development.ini或production.ini中的特定用户定义设置更改视图/模板的内容。
作为一个例子,我说我正在开发一个列出班级所有学生的金字塔网络应用程序。后端数据库只有一个表 - “学生”。现在我开发了一个可选脚本,它还为数据库添加了一个表'teacher'。理想情况下,web-app应该能够针对这两种情况运行。如果缺少教师表,则不会查询它并只打印学生详细信息。如果教师表存在,它将打印教师的姓名以及学生的姓名。
在我看来,这可以通过以下方式之一完成 -
所以我的问题是我应该使用哪种方法?如果要将设置变量传递给视图,该怎么做?是否有一种处理这个问题的标准方法?
答案 0 :(得分:5)
啊,但你可以!将它与数字2结合起来:在.ini文件中添加一个teacher_enabled = true / false设置,然后你可以使用类似的代码:为教师+学生和学生页面保留单独的路线(URL)。问题是当你只有学生信息时,你无法阻止人们实际呼叫前者。
from pyramid.threadlocal import get_current_registry
from pyramid.httpexceptions import HTTPFound
#Define some awesome student views here
@view_config(name='student')
def student(request):
return HTTPFound('Foo!')
if get_current_registry().settings['teacher_enabled']:
#Some awesome student and teacher views here
@view_config(name='student_and_teacher')
def student_and_teacher(request):
return HTTPFound('Bar!')
3号也是可行的。请记住:It's easier to ask for forgiveness than permission。所以你可以这样做:(以SQLAlchemy为例)
from your_models.teacher import Teacher
from sqlalchemy.exc import NoSuchTableError
try:
teacher = session.query(Teacher).filter(Teacher.id==42).first()
except NoSuchTableError:
teacher = Teacher('Unknown')