创建类似于另一个的视图

时间:2013-05-14 16:58:16

标签: python django

我必须在django项目中进行一些更改,虽然我熟悉python,但我不会使用django。

这是我的情况:

我有一个字段为“active”的表。我需要做的是让用户根据字段的值对表进行排序(是/否)。

我查看了views.py,我意识到有一个视图根据id对表进行排序:

users = User.objects.all().order_by('id')

我的问题是:

  1. 如何根据url参数使视图对表进行排序?
  2. 我是否必须创建另一个视图,或者我可以通过某种修改来使用它?

2 个答案:

答案 0 :(得分:2)

您可以使用相同的视图。

def myView(request):
   get_param = request.GET.get('my_param', 'id')
   #some more processing
   users = User.objects.order_by(get_param) #note - you dont need the `all()`

   #rest of the code here.

答案 1 :(得分:0)

这取决于您要在模板中呈现的内容。如果两个视图都呈现相似的html,那么最好在通用视图中重构它们,并根据GET参数进行排序。

我喜欢分离关注点,因此另一种方法可能是重构辅助函数中的视图代码,并在每个视图中使用分隔的URL调用它。

如果视图不呈现类似的html并且在每个方面彼此不同,除了它们在某个地方排序,那么我认为最好的方法是分别对两个视图进行编码。

这只是一个考虑问题,但回答您的问题,您可以GET参与request.GETrequest.POST的参数,具体取决于方法。

希望它有所帮助!