从 URL 获取参数 slugs
Posted
技术标签:
【中文标题】从 URL 获取参数 slugs【英文标题】:Get parameters slugs from the URL 【发布时间】:2014-05-12 00:46:42 【问题描述】:我正在尝试从 URL 中获取两个参数以添加到我的上下文中。
这是网址:
url(r'^company/(?P<company>[\w\-\_]+)/?/(?P<program>[\w\-\_]+)/?$', RegistrationView.as_view(),
name='test'),
观点:
class RegistrationView(RegistrationMixin, BaseCreateView):
form_class = AppUserIntroducerCreateForm
template_name = "registration/register_introducer.html"
slug_field = 'company'
def get_context_data(self, *args, **kwargs):
context = super(RegistrationIntroducerView, self).get_context_data(**kwargs)
print(self.get_slug_field())
context['company'] = ??????
context['program'] = ??????
return context
我已经尝试了一切来获取值self.company
、kwargs['company']
等,我在这里做错了什么?
【问题讨论】:
self.kwargs 是要走的路。一个例子在这里:***.com/questions/6629426/… 【参考方案1】:基类 (View
) 的 as_view
类方法是一个非常简单的 view
函数的闭包,它接受 urls.py 中定义的参数。然后它将它们作为字典分配给视图类的self.kwargs
属性。因此,为了访问这些数据,您需要做的是:
self.kwargs['company']
此外,如果您从 CreateView
继承 RegistrationView
而不是 BaseCreateView
,您会得到 SingleObjectTemplateResponseMixin
与您的视图和 slug_field
混合在一起(以及 model
或 queryset
) get_object
方法将使用它来获取所需的公司。此外,包含Company
实例的上下文变量company
已经为您设置好了,您不必自己设置。
【讨论】:
【参考方案2】:试试这个
self.kwargs['company']
self.kwargs['program']
【讨论】:
【参考方案3】:Here 是您的参考。
context = super(RegistrationView, self).get_context_data(**kwargs)
print(self.get_slug_field())
context['company'] = self.kwargs['company']
context['program'] = self.kwargs['program']
【讨论】:
看在皮特的份上!我都试过了。成功了,谢谢。以上是关于从 URL 获取参数 slugs的主要内容,如果未能解决你的问题,请参考以下文章
angular6 路由拼接查询参数如 ?id=1 并获取url参数
如何在 getStaticProps 中获取 slug 值以调用 api,参数为 slug
Django:“如何在将 url() 传递给 MyClass.as_view() 之前从 url() 获取 slug?”或“如何检查注册是不是开放?”