Django3: невозможно связать html страницу в django - PullRequest
0 голосов
/ 03 августа 2020

Я создал новое приложение как register, и при попытке установить ссылку в html его страница не перенаправлялась после нажатия ссылки

Проект settings.py:

INSTALLED_APPS = [
    'questions.apps.QuestionsConfig',
    'register.apps.RegisterConfig', # registered new app
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'crispy_forms',
]

Project's urls.py:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('questions.urls')),
    path('register/', include('register.urls')) #Linked apps urls.py
]

Зарегистрировать приложения views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import RegisterForm

# Create your views here.
def register(request):

    if request.method == "POST":
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
        return redirect("/")
    else:
        form = RegisterForm()
    return render(request,'register.html',{'form':form})
def test(request):
    return render(request,'test.html',{'form':form})

Зарегистрировать приложения urls.py:

from django.urls import path
from . import views

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

Когда я использую http://127.0.0.1:8000/register/register в адрес браузера, то он работает нормально.

вывод в браузере: enter image description here

But when I use href tag in html to render register.html page, I am getting error.

when tried:

 Регистрация  

Я ничего не получаю а в URL-адресе браузера он отображается как

http://127.0.0.1:8000/#link

при использовании:

<a href="#link" class="btn btn-info"  href="{% url 'register/register' %}">Register</a>

получение ошибки как:

NoReverseMatch at /
Reverse for 'register/register' not found. 'register/register' is not a valid view function or pattern name.

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Это потому, что {% url %} требуется имя представления. С учетом сказанного, эта строка создает проблемы.

Поэтому замените это:

<a href="#link" class="btn btn-info"  href="{% url 'register/register' %}">Register</a>

на:

<a class="btn btn-info"  href="{% url 'register' %}">Register</a>
0 голосов
/ 03 августа 2020

У вас есть два href в теге привязки. У вас также есть ошибка в URL-адресе динамического c. Он должен быть таким:

<a class="btn btn-info"  href="{% url 'register:register' %}">Register</a>

Также в вашем проекте urls.py должно быть так:

path('register/', include('register.urls', namespace="register"))
...