Django 1.3 - 类基于视图定义可选参数的正确方式

2024-10-02 02:42:22 发布

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

我只是对基于班级的观点感到恼火。在

将可选参数的默认值传递到基于类的视图的正确方法是什么?
以前我经常这样做:
http://lethain.com/using-optional-parameters-in-django-urls/

现在我不太确定如何在基于类的视图中实现同样的效果。i、 如何定义视图中的类,条目应该在什么地方网址.py我该如何定义可选参数的默认值?在


Tags: django方法incom视图http参数定义
3条回答

url参数存储在self.argsself.kwargs中。在基于类的通用视图文档的dynamic filtering部分中有一些示例。在

您可以通过including extra options in your url pattern传递默认参数,或者在从self.kwargs获取值时在视图中设置默认参数。在

my_value = self.kwargs.get('key', 'default_value')

对于那些碰巧在看这个问题的人来说,下面是我在1.3中所做的。它与我在1.1中使用的方法几乎相同(除了更详细)。(如我问题中的链接所述)

例如,相关线路网址.py可能看起来像

...
# pass a default value of page = 1 for optional parameter page
url(r'^obj/list$', ObjListView.as_view(), {'page': 1}, name='obj_list'),
url(r'^obj/list/page(?P<page>[0-9]+)$', ObjListView.as_view(), name='obj_list'),
...
# both new and edit use the same class, but edit obviously needs an id for the object.
# i should probably just be using pk but whatever.
url(r'^obj/new$', ObjEditView.as_view(), name='obj_edit'),
url(r'^obj/edit/(?P<obj_id>[0-9]+)/$', ObjEditView.as_view(), name='obj_edit'), 

在上面的ObjEditView类的例子中,我们可能有这样的东西

^{pr2}$

作为我在上述评论中向Alasdair提出的问题的必然结果,类中各种函数的执行顺序通常与它们在文档中的顺序相对应。i、 e.在UpdateView中get_object()在get_initial()之前

和这个问题有点关系。我一直在研究如何使用基于类的视图获取url参数来添加一些额外的上下文。你可以这样做:

url(r'^param1/(?P<param1>\d+)/param2/(?P<param2>\d+)/$', ClassDetailView.as_view())

然后在你看来:

^{pr2}$

然后在您的模板中,您将拥有{param1}}和{param2}}对象。在

我是新来的,所以如果有更好的方法来做,请随意修改。在

相关问题 更多 >

    热门问题