金字塔:根据设置修改网站内容

2024-09-27 21:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以根据中的特定用户定义设置更改视图/模板的内容开发.ini或者生产.ini. 在

举个例子,我正在开发一个金字塔网络应用程序,它列出了班上所有的学生。后端数据库只有一个表-“student”。现在我开发了一个可选脚本,它还向数据库中添加了一个表“teacher”。理想情况下,web应用程序应该能够同时运行这两种情况。如果缺少教师表,它将不查询它,只打印学生详细信息。如果存在教师表,它将打印教师姓名和学生姓名。在

在我看来,这可以通过以下方式之一实现-

  1. 为教师+学生和学生保留单独的路线(URL) 页。问题是你不能阻止人们 当你只有学生信息时给前者打电话。这会导致 到不必要的错误页
  2. 在.ini文件中使用设置teacher_nabled=true/false。可在Upy设置中启用Upy'Upy设置。只配置一个路由(比如“home”、“/”),但根据seeting变量是否为true/false将其映射到不同的视图。这将不允许使用@view_config decorator,两种情况下的模板必须分开
  3. 再次使用设置变量,以某种方式将其传递给视图。仅在视图中进行相关查询。E、 g.-如果teacher_enabled为True,则查询teacher表,否则只查询student表。将此变量也传递给模板,然后由模板决定是否显示某些详细信息(例如教师姓名)。在

所以我的问题是我应该使用哪种方法?如果要将设置变量传递给视图,如何做到这一点?有标准的方法来处理这个问题吗?在


Tags: 视图模板数据库falsetrue方式情况详细信息
1条回答
网友
1楼 · 发布于 2024-09-27 21:27:13

Keep separate routes (URLs) for teacher+student and student only pages. The problem is that you cannot stop people from actually calling the former when you only have student info.

啊,但你可以!将它与第2项结合:在.ini文件中添加一个teacher_nabled=true/false设置,然后您可以使用类似于以下内容的代码:

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!')

第三条也是可行的。记住:It's easier to ask for forgiveness than permission。所以您可以这样做:(以SQLAlchemy为例)

^{pr2}$

相关问题 更多 >

    热门问题