我必须在 django 项目中进行一些更改,虽然我熟悉 python,但我不使用 django。
这是我的情况:
我有一个带有“活动”字段的表格。我需要做的是让用户根据字段的值(是/否)对表格进行排序。
我查看了views.py,我意识到有一个视图可以根据id对表格进行排序:
users = User.objects.all().order_by('id')
我的问题是:
- 如何使视图根据 url 参数对表格进行排序?
- 我必须创建另一个视图还是可以通过某种修改使用相同的视图?
您可以使用相同的视图。
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.
这取决于您要在模板中呈现的内容。如果两个视图都会呈现相似的 html,那么最好在通用视图中重构它们并根据GET
参数进行排序。
我喜欢关注点分离,因此另一种方法可能是在辅助函数中重构视图代码,并在每个视图中使用单独的 url 调用它。
如果视图没有呈现相似的 html 并且除了它们在某个地方对某些内容进行排序之外,在各个方面都彼此不同,那么我认为最好的方法是分别对两个视图进行编码。
这只是一个考虑问题,但回答您的问题,您可以获得GET
访问request.GET
或request.POST
取决于方法的参数。
希望能帮助到你!