Django3:无法在 Django 中 link html 页面

Django3 :Unable to link html page in django

我创建了一个新的应用 register 并且在 html 中尝试 link 它在 link 点击

之后没有重定向页面

项目的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',
]

项目的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'),
]

当我在浏览器的 url 中使用 http://127.0.0.1:8000/register/register 时,它工作正常。

在浏览器中输出:

但是当我在 html 中使用 href 标签来呈现 register.html 页面时,出现错误。

尝试时:

<a href="#link" class="btn btn-info"  href="register/register">Register</a>

我没有得到任何东西,在浏览器中 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.

您的锚标记中有两个 href。您的动态 url 也有错误。应该是这样的:

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

另外,在你的项目urls.py中,应该是这样的:

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

因为{% url %}需要一个视图名称。话虽这么说,这条线造成了问题。

所以替换这个:

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

与:

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