Django Кнопка отправки формы не работает - PullRequest
0 голосов
/ 06 мая 2020

Итак, я следую руководству code4startup о том, как создать приложение, подобное Ubereats. Прямо сейчас я пытаюсь зарегистрировать нового владельца ресторана и ресторана в базе данных. Я использую форму из Django для обработки всех полей данных.

Все работает нормально, пока не нажму кнопку "зарегистрироваться". Мой код: ПРЕДПОЛАГАЕТСЯ, ЧТОБЫ ОТПРАВИТЬ все данные из формы в базу данных, а затем автоматически войдет вновь созданного владельца ресторана на страницу ресторанов. ОДНАКО, когда я нажимаю кнопку регистрации, ничего не происходит, и вместо этого перезагружается страница регистрации.

Как я могу решить эту проблему? Учебник, которому я следую, датируется 2017 годом, и я думаю, что версия django, которую использует автор, устарела.

Ниже приведены некоторые фрагменты моего кода:

SIGN-UP HTML ( ТОЛЬКО КНОПКА, ФОРМА РАБОТАЕТ ОК):

<form method="POST" enctype="multipart/form-data" >
   {% csrf_token %}
   {{ user_form }}
   {{ restaurant_form }}
<button type="submit">Sign Up</button>

VIEWS.py

def restaurant_home(request):
    return render(request, 'restaurant/home.html', {})

def restaurant_sign_up(request):
    user_form = UserForm()
    restaurant_form = RestaurantForm()

    #when submitting data:
    if request == "POST":
        user_form = UserForm(request.POST)
        restaurant_form = RestaurantForm(request.POST, request.FILES)

        if user_form.is_valid() and restaurant_form.is_valid():

            new_user = User.objects.create_user(**user_form.cleaned_data)
            new_restaurant = restaurant_form.save(commit=False)
            new_restaurant.user = new_user
            new_restaurant.save()

            login(request, authenticate(
                username = user.form.cleaned_data["username"],
                password = user.form.cleaned_data["password"]

            ))

            return redirect(restaurant_home)


    return render(request, 'restaurant/sign_up.html', {
        "user_form": user_form,
        "restaurant_form": restaurant_form

    })

Ответы [ 2 ]

1 голос
/ 06 мая 2020

I должно быть request.method в

if request.method == "POST":

Do c: HttpRequest.method

0 голосов
/ 06 мая 2020

добавить атрибут действия в тег формы, чтобы перейти на нужную страницу

<form action=“/home“ method=“POST” ...>
...