Django / HTML Отправить кнопку перенаправления на неправильную страницу - PullRequest
1 голос
/ 24 октября 2019

Я пытаюсь сделать регистрационную форму с помощью Django & HTML, и я следую этому уроку: Видео

2: 45: 00 в видео, я делаю те же самые шагикак он, хотя единственная разница в моем коде связана с моим предыдущим вопросом: Моя предыдущая тема

Это мой HTML-код:

    <!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Registration</title>
</head>
<body>
    <form action="register" method="post">
        {% csrf_token %}
        <input type="text" name="first_name" placeholder="First Name"><br>
        <input type="text" name="last_name" placeholder="Last Name"><br>
        <input type="text" name="username" placeholder="Username"><br>
        <input type="email" name="email" placeholder="Email"><br>
        <input type="password" name="password1" placeholder="Password"><br>
        <input type="password" name="password2" placeholder="Confirm Password"><br>
        <input type="Submit">
    </form>
</body>
</html>

и этоэто мои views.py:

from django.shortcuts import render, redirect
from django.contrib.auth.models import User, auth

def register(request):

    if (request.method == 'post'):
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        username = request.POST['username']
        password1 = request.POST['password1']
        password2 = request.POST['password2']
        email = request.POST['email']

        user = User.objects.create_user(username=username, password=password1, email=email, first_name=first_name, last_name=last_name)
        user.save()
        print('user created')
        return redirect('')

    else:
        return render(request, 'register.html')

Однако, кажется, что когда я нажимаю кнопку «Отправить», вместо кнопки, фактически читающей код views.py и проверяющей оператор IF, он просто перенаправляет меня на localhost: 8000 / account / register / register, что совершенно неверно, как показано здесь: Imgur link

Я не уверен в том, что я делаю неправильно, и почему мой код действует по-другомунесмотря на то, что я делаю то же самое, что делает парень из учебника в своем видео?

Любая помощь будет высоко оценена.

1 Ответ

1 голос
/ 24 октября 2019

Его код просто неверен. Вы не можете просто вставить имя представления в атрибут action таким образом;это должен быть реальный путь. Поскольку ваш URL-адрес "/ account / register", это то, что вы должны использовать.

Но приличный учебник ввел бы тег {% url %}. И, на самом деле, приличный учебник использовал бы здесь формы Django;он, кажется, совершенно забыл думать о проверке, что довольно непростительно. Я бы порекомендовал найти другой учебник.

(Обратите внимание, что вы сами допустили ошибки при копировании его кода; в представлении, где вы проверяете request.method, это должно быть "POST", а не "post"). )

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