Почему Django добавляет "/ account / logout /" во все поиски тегов шаблона {% url%}? - PullRequest
0 голосов
/ 27 января 2020

У меня есть очень простой шаблон PO C, в Django, содержащий это;

    <form action="{% url 'formtest' %}" method="post">
        {% csrf_token %}

        {% url 'formtest' %}

        <input type="submit" value="Vote">

    </form>

Когда я отрисовываю его, теги шаблона URL делают мою цель такой;

/accounts/logout/formtest

Это не правильно, это должно быть просто '/ formtest'. И я не могу понять, почему он добавляет бит / account / logout. Пользователь не вошел в систему. И мой url.py выглядит так:

from django.urls import path

from . import views

urlpatterns = [
     path('', views.index, name='index'),

     path('create_user/<str:username>', views.create_user, name='create_user'),
     path('monitor', views.monitor, name='monitor'),
     path('upload', views.upload_file, name='upload'),
     path('formtest', views.formtest, name='formtest'),

]

Моя Django версия - 2.2.5, и я попытался довести пример до минимума. Но я не могу понять, почему этот шаблонный тег добавляет этот бит. Я почти уверен, что что-то странное или странное было сделано мной самим, но мне не удалось найти, что и где.

Редактировать: проект urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('Gallery.urls')),
    path('gallery/', include('Gallery.urls')),

    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),

    path('accounts/profile/', include('Gallery.urls')),
    path('accounts/logout/', include('Gallery.urls')),

 ]

1 Ответ

0 голосов
/ 27 января 2020

В вашем проекте urls.py вы указали все базовые URL-адреса на Gallery.urls, и поскольку учетные записи / выход из системы разрешаются последними, вы получаете "/ account / logout / formtest" для formtest.

Должен быть только один базовый URL-адрес, указывающий на Gallery.urls, который является

path('gallery/', include('Gallery.urls')),

Это разрешит тестирование в / gallery / formtest ". Удалите все остальные включения ('Gallery.urls' )) и укажите его в соответствующих файлах urls.py.

...