Создание форм, перенаправляющих на другой URL-адрес при успешном выполнении

Итак, я создал две папки (помимо основной папки проекта) Одна из моих папок - это основное приложение, а вторая - папка пользователей.


Сообщение об ошибке:

Страница не найдена (404) Метод запроса: POST URL запроса: http://127.0.0.1:8000/users/register. Используя URLconf, определенный в cooknook.urls, Django попробовал эти шаблоны URL, в таком порядке:

admin/

users/ register/ [name='cooknook-register']

[name='cooknook-home']

about/ [name='cooknook-about']

account/ [name='cooknook-account']

Текущий путь, users/register, не соответствует ни одному из этих путей.


^^ Error Thrown

Итак, в моем файле views.py в папке users я говорю ему после успеха:

`

def register(response):
    if response.method == "POST":
        form = UserCreationForm()
        if form.is_valid():
            form.save()`
        
        return redirect('cooknook-home')


В принципе, я уже пытался решить эту проблему и попытался реализовать функцию 'reverse' в этом, которая, похоже, не работает вообще. Проблема в том, что, похоже, он пытается найти urls/html(temps) внутри моей папки cooknookapp, которая является моей основной папкой приложения. Мне нужно, чтобы он перенаправлял на home.html (расположенный внутри моей основной папки приложения) Как я могу заставить Django искать это вне папки Users/ Dir?


register.html (внутри папки users)

{% extends 'cooknookapp/base.html' %}

{% block title %}
    Create an Account
{% endblock %}

{% block content %}
    <form method="POST" class="form-group">
        {{form}}
        <button type="submit" class-"btn-submit">Sign Up</button>
    </form>
{% endblock %}

cooknookapp (главное приложение) urls.py:

> from django.urls import path from . import views
> 
> urlpatterns = [
>     path('', views.home, name='cooknook-home'),
>     path('about/', views.about, name='cooknook-about'),
>     path('account/', views.account, name='cooknook-account'), ]

user (текущая папка dir) urls.py:

> from django.urls import path from . import views
> 
> # Added URL Path urlpatterns = [
>     path('register/', views.register, name='cooknook-register'), ]

Я ожидал, что он отправит меня на домашнюю страницу, которая находится в папке cooknookapp. Вместо этого он искал этот url в папке users/, в которой и находится код, который сейчас пишется. Если вам нужна дополнительная информация для помощи, пожалуйста, не стесняйтесь, дайте мне знать.

from django.shortcut import resolve_url
def register(response):
    if response.method == "POST":
        form = UserCreationForm()
        if form.is_valid():
            form.save()`
            return redirect(resolve_url('cooknook-home'))
        else:
            # invaild action


Выдаваемая ошибка на самом деле является 404 для самой страницы /users/register, а не для перенаправления на "home"

Для включения регистрационных урлов вам нужно добавить что-то вроде этого в ваш основной (верхнего уровня) urls.py

 path("users/", include("users.urls")),

Это добавит все урлы из файла /users/urls.py в контрольный список возможных совпадений. Первый аргумент "users/" говорит о том, что перед всеми этими урлами из этого файла будет стоять 'users' - так что users/register будет соответствовать, а 'register' сам по себе - нет.

релевантная информация о Django Docs

Вернуться на верх