Ошибки перенаправления в Django
В настоящее время у меня есть проблема с использованием моей кнопки, поскольку мне нужно открыть модальное окно, которое успешно работает, но при нажатии на кнопку с других страниц она должна перенаправлять обратно на страницу, на которой она была нажата.
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#editProfile">+</button>
Я попробовал return redirect(request.META.get('HTTP_REFERER')), который действительно сохраняет url, но мне нужно использовать context['is_post'] в случае, если он не сможет снова открыть модал, который должен быть передан. Так что в настоящее время, если я использую мой, он будет открываться при ложных данных, но не будет удерживать url страницы. context['nmenu'] - это то, что используется, чтобы убедиться, что тег a в настоящее время активен.
views.py:
def index(request):
context={}
context['is_post']= False
editProfileForm = UserProfileForm()
if request.method == "POST":
if 'editProfileForm' in request.POST:
editProfileForm = UserProfileForm(request.POST or None, request.FILES or None,instance=request.user)
if editProfileForm.is_valid():
editProfileForm.save()
editProfileForm = UserProfileForm()
context['editProfileForm'] = editProfileForm
return render(request, "home.html", context)
else:
context['is_post'] = True
context['editProfileForm'] = editProfileForm
return render(request, "home.html", context)
else:
# Checks if user is logged out or in and passes to form
if request.user.is_authenticated:
Inbox = Messages.objects.filter(Q(sender=request.user) | Q(receiver=request.user)).order_by("-time", "read")
context['Inbox'] = Inbox
unreadMessagesCount = Messages.objects.filter(Q(receiver=request.user) & Q(read=False)).count()
context['unreadMessagesCount']=unreadMessagesCount
editProfileForm = UserProfileForm(instance=request.user)
context['editProfileForm'] = editProfileForm
context['nmenu']='home'
return render(request, "home.html", context)
html:
{% block content %}
<div class="col-md-3" style="float:left">
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#editProfile">+</button>
<ul class="nav nav-tabs flex-column" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link" id="home" href="/" >Dashboard</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="calendar" href="calendar">Calendar</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="logout" href="{% url 'logout' %}" >Log out</a>
</li>
</ul>
</div>
<div class="col-md-9" style="float:right">
<div class="tab-content" id="myTabContent">
<div class="tab-pane" id="home" >
{% include 'dashboard.html' %}
</div>
<div class="tab-pane" id="calendar" >
{% include 'googleCalendar.html' %}
</div>
</div>
</div>
{% if nmenu %}
<script type="text/javascript">
$("a#{{nmenu}}").addClass("active");
$("div#{{nmenu}}").addClass("active");
</script>
{% endif %}
{% endblock %}
html
{% block content %}
<div class="modal fade" id="editProfile" tabindex="-1" role="dialog" aria-labelledby="editProfilelCenterTitle" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="editProfileLongTtitle">Edit Profile</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
{% include 'editProfileForm.html' %}
</div>
</div>
</div>
</div>
<!-- Do this after jQuery loaded -->
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
{% if is_post %}
<script type="text/javascript">
$(window).on('load', function() {$('#editProfile').modal('show');});
</script>
{% endif %}
{% endblock %}
urls.py
urlpatterns = [
path('', index, name='home'),
path('calendar', calendar, name='calendar'),
views.py
@login_required
def calendar(request):
context={}
editProfileForm = UserProfileForm(instance=request.user)
context['editProfileForm'] = editProfileForm
context['nmenu']='calendar'
return render(request, 'home.html', context)