Когда я искал об этом в Google, я нашел только ответы, которые на самом деле не помогли мне.Моя проблема действительно проста: я просто хочу изменить URL в браузере, когда я рендеринг.(Когда я искал, я обнаружил, что не могу передать какие-либо данные в функцию redirect (), так что это не очень хороший способ).
Метод «post» срабатывает, когда пользователь отправляет форму (будет некоторая проверка и т. Д., Но в конце дня мне нужно будет обработать шаблон (домой, если пользователь правильно написал учетные данные, или войдите снова, чтобы показать пользователя)если он неверно написал учетные данные)).Когда я отрисовываю какой-то шаблон, URL в браузере будет "/ submit_login" вместо "/login".
Вот эта часть кода:
в urls.py
path('login/', login.as_view(), name='login'),
path('submit_login/', login.as_view(), name='submit_login'),
в файле views.py
class login(View):
template_src = "login.html"
# showing user login view
def get(self, request):
form = AuthenticationForm()
return render(request, self.template_src, { 'form': form })
#This triggers when user submit form
def post(self, request):
#I tried request.path_info but it didn't work also
#request.path_info = "/login/"
form = AuthenticationForm(request.POST)
#When I call this URL is still "/submit_login" instead of "/login"
return render(request, self.template_src, {'form': form })
(если кто-то хочет увидеть, что я пытаюсь сделать):
{% extends 'base_template.html' %}
{% block content %}
<h1> here you can login to your account! </h1>
<form name = "form" action="{% url 'submit_login' %}"method="post">
{% csrf_token %}
{{form}}
<input type = "submit" value = "login!"/>
</form>
{% endblock %}
У вас есть идеи, как это исправить?