初学django2-基于类的视图中获取URL参数

目前想要实现的功能是点击两个链接:在职人员、离职人员。改两个页面都使用同一个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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值