Как изменить URL при рендеринге в Django? - PullRequest
0 голосов
/ 14 апреля 2019

Когда я искал об этом в 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 %}

У вас есть идеи, как это исправить?

...