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>
我创建了一个新的应用 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>