Почему мой Django URL не связан с идентификатором пользователя?
Когда я ввожу следующий URL: 'http://127.0.0.1:8000/mainpage/13/updateportfolio/', отрисованный шаблон показывает "Welcome username#13" в правом верхнем углу, что соответствует id #13 в моей базе данных PostgreSQL.
Однако, если я ввожу URL 'http://127.0.0.1:8000/mainpage/100/updateportfolio/, отрисованный шаблон по-прежнему показывает то же имя пользователя в правом верхнем углу, он должен перенаправить пользователя на страницу входа. Как мне произвести эту аутентификацию или у меня неправильное представление об URL вообще?
urls.py
app_name = 'mainpage'
urlpatterns = [
path('<int:pk>/updateportfolio/', mainview.UpdatePortfolioView.as_view(), name='update'),
path('<int:pk>/transactions/'), mainview.TransactionsView.as_view(), name='transactions'),
]
views.py
class UpdatePortfolioView(LoginRequiredMixin, FormView):
form_class = UpdatePortfolio
template_name = 'mainpage/updateportfolio.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
current_user = get_object_or_404(User, pk=self.request.user.pk)
tickers = TickerSymbols.objects.all()
context['username'] = current_user.username
context['form'] = self.form_class
context['tickers'] = tickers
return context
def get_object(self):
return self.request.user.pk
def form_valid(self, form):
user_holding = get_object_or_404(Transaction, pk=self.request.user.pk)
symbol = form.cleaned_data['symbol'].upper()
share_number = form.cleaned_data['share']
user_holding.symbol = symbol
# Save form inputs to database
messages.success(
self.request,
f"{share_number} shares of {symbol} has been updated to your portfolio")
# Save form
super(UpdatePortfolioView, self).form_valid(form)
if 'submit' in self.request.POST:
return redirect(reverse('mainpage:transactions', kwargs={'pk': self.request.user.pk}))
elif 'submit_another' in self.request.POST:
return render(self.request, self.template_name, {'form': form})