初学django2-基于类的视图中获取URL参数
2016-01-04 19:16
666 查看
目前想要实现的功能是点击两个链接:在职人员、离职人员。改两个页面都使用同一个ListView进行查询。
初定在职人员的链接为
http://127.0.0.1/HRSystem/personlist/is_deleted-0
离职人员的链接为
http://127.0.0.1/HRSystem/personlist/is_deleted-1
is_deleted是model中是否删除的字段名。
如果按照以上链接,则可以定义urls.py:
urls.py
from HRSystem.views import PersonListView
from django.contrib.auth import views as auth_views,decorators
url(r'^personlist/([\w]+)-([\w]+)/$',
decorators.login_required(PersonListView.as_view(),login_url='HRSystem:login')
,name='personlist'),
以上使用了装饰器login_require,如果未登陆访问页面,则会跳转到登陆页面。
views中定义Personlist类(此处省略引用)
views.py
class PersonListView(generic.ListView):
template_name = 'HRSystem/personlist.html'
paginate_by = 40
def get_queryset(self,*args,**kwargs):
person_list = Person.objects.filter(is_deleted=self.args[1])
return person_list
def get_context_data(self,**kwargs):
context = super(PersonListView,self).get_context_data(**kwargs)
return context此处值得注意的是,虽然is_deleted字段使用了BoonleanField,但是在URL访问时不可使用True/False替代0或1。
self.args[]获取了url中的参数。
如果不想通过args传递参数,则可以使用kwargs传递,但是url中要更改为:
url(r'^personlist/(?P<a>[\w]+)-(?P<b>[\w]+)/$',
decorators.login_required(PersonListView.as_view(),login_url='HRSystem:login')
,name='personlist'),url中加入参数名a, b 那么在views的引用中就可以直接从参数名中用一下的方法获取
def get_queryset(self,*args,**kwargs):
person_list = Person.objects.filter(is_deleted=self.kwargs['b'])
return person_list
初定在职人员的链接为
http://127.0.0.1/HRSystem/personlist/is_deleted-0
离职人员的链接为
http://127.0.0.1/HRSystem/personlist/is_deleted-1
is_deleted是model中是否删除的字段名。
如果按照以上链接,则可以定义urls.py:
urls.py
from HRSystem.views import PersonListView
from django.contrib.auth import views as auth_views,decorators
url(r'^personlist/([\w]+)-([\w]+)/$',
decorators.login_required(PersonListView.as_view(),login_url='HRSystem:login')
,name='personlist'),
以上使用了装饰器login_require,如果未登陆访问页面,则会跳转到登陆页面。
views中定义Personlist类(此处省略引用)
views.py
class PersonListView(generic.ListView):
template_name = 'HRSystem/personlist.html'
paginate_by = 40
def get_queryset(self,*args,**kwargs):
person_list = Person.objects.filter(is_deleted=self.args[1])
return person_list
def get_context_data(self,**kwargs):
context = super(PersonListView,self).get_context_data(**kwargs)
return context此处值得注意的是,虽然is_deleted字段使用了BoonleanField,但是在URL访问时不可使用True/False替代0或1。
self.args[]获取了url中的参数。
如果不想通过args传递参数,则可以使用kwargs传递,但是url中要更改为:
url(r'^personlist/(?P<a>[\w]+)-(?P<b>[\w]+)/$',
decorators.login_required(PersonListView.as_view(),login_url='HRSystem:login')
,name='personlist'),url中加入参数名a, b 那么在views的引用中就可以直接从参数名中用一下的方法获取
def get_queryset(self,*args,**kwargs):
person_list = Person.objects.filter(is_deleted=self.kwargs['b'])
return person_list
相关文章推荐
- 层次聚类 Hierarchical Clustering Algorithms
- RemovedInDjango110Warning
- 利用 Django REST framework 编写 RESTful API
- 使用leangoo实现多泳道任务看板
- 在WordPress中加入Google搜索功能的简单步骤讲解
- Google Map开发系列(三)——加载谷歌地图API的URL详细解读
- rk3288添加google_市场和map
- golang使用 mongo
- Google搜索市场份额跌至64%:捆绑销售依然是流量大头
- 详解WordPress中分类函数wp_list_categories的使用
- go语言学习笔记
- Google Map开发系列(二)——使用谷歌地图API之前应该有所了解的一些技术外背景
- google离线地图制作
- Google Map开发系列(一)——谷歌地图API密钥(API Key)的解读和使用技巧
- RK3288改开机logo问题
- LZW Data Compression Algorithm
- 谷歌的网页排序算法(PageRank Algorithm)
- MIT Introduction to Algorithms 学习笔记(七)
- CF Good Bye 2015 E. New Year and Three Musketeers(贪心+枚举)
- GO语言可以直接输出数组