как вызвать функцию views.py с помощью модального ? - PullRequest
0 голосов
/ 13 июля 2020

У меня есть модальный вход в базу. html. при нажатии кнопки входа открывается модальное окно. Я хочу, чтобы при отправке формы action = 'login' вызывала функцию входа в view.py, но когда я пытаюсь отправить, она перенаправляет страницу на страницу входа, которая не существует ('http://127.0.0.1: 8000 / авторизоваться'). Я хочу знать, как я могу вызвать функцию входа в систему представлений из модального окна, если я не ошибаюсь, тогда атрибут action = '' вызывает функцию, а не страницу. Я попытался удалить путь входа в систему из urls.py.

  1. base. html
<div class="modal fade" id="modalLoginForm">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
                <!-- Default form login -->
                <form class="text-center border border-light" action="login" method="post" autocomplete="off">
                    {% csrf_token %}

                    <!-- Email -->
                    <input type="text" name="username" class="form-control mb-4" placeholder="E-mail" required>

                    <!-- Password -->
                    <input type="password" name="password" class="form-control mb-4" placeholder="Password" required>

                    <div class="d-flex justify-content-around">
                        <div>
                            <!-- Remember me -->
                            <div class="custom-control custom-checkbox">
                                <input type="checkbox" class="custom-control-input" id="defaultLoginFormRemember" name="remember_me">
                                <label class="custom-control-label" for="defaultLoginFormRemember">Remember me</label>
                            </div>
                        </div>
                        <div>
                            <!-- Forgot password -->
                            <a href="">Forgot password?</a>
                        </div>
                    </div>

                    <!-- Sign in button -->
                    <input class="btn btn-info btn-block my-3" type="submit" value="Sign in">

                </form>
                <!-- Default form login -->
            </div>
        </div>
    </div>
views.py
def login(request):
    if request.method == "POST":
        username = request.POST['username']
        password = request.POST['password']

        user = auth.authenticate(username=username, password=password)

        if user is not None:
            auth.login(request, user)
            return redirect('/')
        else:
            messages.info(request, 'invalid credentials')
            return redirect('index')
    else:
        return render(request, 'index.html')

app urls.py

urlpatterns = [
    path('', views.login, name='login'),
    path('register',views.register, name='register'),
    path('logout', views.logout, name='logout')
]

проект urls.py

urlpatterns = [
    path('', include('camroid_app.urls')),
    path('accounts/', include('accounts_app.urls')),

    path('admin/', admin.site.urls),
]

как я могу вызвать login () просмотров из <form action='login'>

, поскольку это вызывает ошибку: The current path, login, didn't match any of these.

как я могу вызвать функцию просмотров прямо из <form action='login'>

1 Ответ

0 голосов
/ 13 июля 2020

попробуйте:

action="{% url 'login' %}"

или

action="/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...