Я в замешательстве.У меня есть вид списка, который предоставляет ссылки на подробный вид.Я хотел, чтобы детальный вид мог вернуться к (вызывающему) списку.Было несколько причин, по которым обычная кнопка «назад» не сработала;поэтому я решил предоставить URL-адрес представления списка на странице сведений, назначив request.path параметру с именем last_page.
Если я работаю в среде разработки Django на порту 8000, last_page | slice: '1:' удаляет ведущий '/' из моей переменной.Когда я запускаю тот же код в IIS (10), я должен использовать last_page | slice: '0:' , чтобы сделать то же самое, или я получаю ошибку NoReverseMatch, когда пытаюсь использовать last_page в моих деталяхшаблон.Такое поведение наблюдается в обеих средах на компьютере с Windows Server 2016.(Python 3.7.3, Django 2.2.5, wfastcgi 3.0).
В моем шаблоне представления списка мой URL выглядит следующим образом:
href="{% url 'a-detail' pk=s.s_id last_page=request.path %}"
В моем подробном шаблоне код IИспользование кнопки «Назад» выглядит следующим образом ( Здесь фрагмент удаляет начальный '/' из request.path ):
<script>
document.write('<a href="{% url last_page|slice:'1:' %}">Go Back</a>')
</script>
В моем файле urls.py яиспользуя эти URL-пути (на самом деле не нужен тот, чтобы больше не передавать параметр):
path('<int:pk>', views.ADetailView.as_view(), name='a-detail'),
path('<int:pk>/<path:last_page>', views.ADetailView.as_view(), name='a-detail'),
Файл views.py для моей страницы сведений выглядит следующим образом:
class ADetailView(LoginRequiredMixin, DetailView):
model = Base
template_name = 'a_detail.html'
# Handles form that changes status
def post(self, request, pk, last_page=2):
obj = SChanges.objects.get(pk=pk)
obj.status = SStatus.objects.get(status_id=request.POST.get('status'))
obj.save()
return HttpResponseRedirect(reverse('a-detail', kwargs={'pk': pk, 'last_page':last_page}))
def get_context_data(self, **kwargs):
context = super(ADetailView, self).get_context_data(**kwargs)
context['last_page'] = self.kwargs.get('last_page')
return context
Я ожидал, что | slice: будет работать одинаково в обеих средах.Может кто-нибудь объяснить, почему я должен использовать «1» в среде разработки Django и «0» в IIS?
Спасибо -
Al