将上下文从一个视图传递到另一个视图
Passing context from one view to the other
我试图在我的应用程序中将 URL 参数传递给另一个 view
。我目前有一个函数(EntryListView
) 可以识别您select 的月份,然后只显示该月份的内容。但是,我希望月份也显示在 detail
URL 中。这将使 "go-back" 按钮能够导航回当月的页面,而不是出错或导航回登录页面。
urls.py 原样:
url(r'entry/list/(?P<month>\w+)$', views.EntryListView.as_view(), name='entry-list'),
url(r'entry/detail/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
views.py
class DetailView(generic.DetailView):
model = Entry
template_name = 'argent/detail.html'
class EntryListView(generic.ListView):
template_name = 'argent/index_list.html'
queryset = Entry.objects.all()
def get_context_data(self, **kwargs):
month = self.kwargs.get('month')
ctx = super(EntryListView, self).get_context_data(**kwargs)
# January
if month == 'January':
ctx['January17_qs'] = Entry.objects.filter(date__range=('2017-1-1', '2017-1-31'))
# February17
elif month == 'February':
ctx['February17_qs'] = Entry.objects.filter(date__range=('2017-2-1', '2017-2-28'))
# March
elif month == 'March':
ctx['March17_qs'] = Entry.objects.filter(date__range=('2017-3-1', '2017-3-31'))
return ctx
模板
<a href="{% url 'argent:entry-list' %}">
<button type="button" class="btn btn-primary">Go Back
</button>
</a>
我目前在使用 {% url 'argent:entry-list' %}
时遇到此错误:
Reverse for 'entry-list' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['tracker/entry/list/(?P<month>\w+)$']
在此先感谢您的帮助!
您可以将详细信息的月份作为 kwarg 传递给 url
模板标签。这样的东西应该可以工作。
class DetailView(generic.DetailView):
model = Entry
template_name = 'argent/detail.html'
def get_context_data(self, **kwargs):
ctx = super(DetailView, self).get_context_data(**kwargs)
ctx['current_month'] = self.get_object().date.strftime("%B")
return ctx
template.html
<a href="{% url 'argent:entry-list' current_month %}">
<button type="button" class="btn btn-primary">Go Back</button>
</a>
我试图在我的应用程序中将 URL 参数传递给另一个 view
。我目前有一个函数(EntryListView
) 可以识别您select 的月份,然后只显示该月份的内容。但是,我希望月份也显示在 detail
URL 中。这将使 "go-back" 按钮能够导航回当月的页面,而不是出错或导航回登录页面。
urls.py 原样:
url(r'entry/list/(?P<month>\w+)$', views.EntryListView.as_view(), name='entry-list'),
url(r'entry/detail/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
views.py
class DetailView(generic.DetailView):
model = Entry
template_name = 'argent/detail.html'
class EntryListView(generic.ListView):
template_name = 'argent/index_list.html'
queryset = Entry.objects.all()
def get_context_data(self, **kwargs):
month = self.kwargs.get('month')
ctx = super(EntryListView, self).get_context_data(**kwargs)
# January
if month == 'January':
ctx['January17_qs'] = Entry.objects.filter(date__range=('2017-1-1', '2017-1-31'))
# February17
elif month == 'February':
ctx['February17_qs'] = Entry.objects.filter(date__range=('2017-2-1', '2017-2-28'))
# March
elif month == 'March':
ctx['March17_qs'] = Entry.objects.filter(date__range=('2017-3-1', '2017-3-31'))
return ctx
模板
<a href="{% url 'argent:entry-list' %}">
<button type="button" class="btn btn-primary">Go Back
</button>
</a>
我目前在使用 {% url 'argent:entry-list' %}
时遇到此错误:
Reverse for 'entry-list' with arguments '()' and keyword arguments '{}' not found. 1 pattern(s) tried: ['tracker/entry/list/(?P<month>\w+)$']
在此先感谢您的帮助!
您可以将详细信息的月份作为 kwarg 传递给 url
模板标签。这样的东西应该可以工作。
class DetailView(generic.DetailView):
model = Entry
template_name = 'argent/detail.html'
def get_context_data(self, **kwargs):
ctx = super(DetailView, self).get_context_data(**kwargs)
ctx['current_month'] = self.get_object().date.strftime("%B")
return ctx
template.html
<a href="{% url 'argent:entry-list' current_month %}">
<button type="button" class="btn btn-primary">Go Back</button>
</a>