Django 3x 内置 url 模板标签 // 通过名称模式动态 urls
Django 3x built in url template tag // dynamic urls via name pattern
大家好,我尝试构建一个相当简单的应用程序,但我很难处理 url 模板标签。我查找了许多不同的来源并将项目编码了 3 次新的我不知道是什么问题任何建议都是很大的帮助。
谢谢
C:.
├───nps
│ ├───templates
│ └───__pycache__
└───user
├───migrations
│ └───__pycache__
├───templates
│ └───user
└───__pycache__
nps/urls.py
from django.contrib import admin
from django.urls import path,include
from django.views.generic import TemplateView
#include urls from user-app
urlpatterns = [
path('',TemplateView.as_view(template_name='homepage.html')),
path('user/',include('user.urls')),
path('admin/', admin.site.urls),
]
user/urls.py
from django.urls import path
from . import views as user_views
#define names for the specific urls
urlpatterns = [
path('home/',user_views.home,name='user-home'),
path('login/',user_views.loginPage,name='user-login'),
path('register/',user_views.registerPage,name='user-register')
]
#---------------------------------------- ------------------------------------------#
模板的基本布局
user/templates/user/base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
<title>Document</title>
</head>
<body>
{%block main%}{%endblock main%}
</body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
</html>
home.html 带有导航链接和 url 标签
user/templates/user/home.html
{%extends 'user/base.html'%}
{%block main%}
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-home'%}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-login'%}">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-register'%}">Register</a>
</li>
</ul>
{%endblock main%}
#---------------------------------------- ------------------------------------------#
错误信息
TemplateSyntaxError at/user/home
Error during template rendering
你需要在url
和URL之间加一个space,所以`{%url'user-home' %} 而不是 {% <s>url'user-home'</s> %}
:
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-home' %}</strong>">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-login' %}</strong>">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-register' %}</strong>">Register</a>
</li>
</ul>
大家好,我尝试构建一个相当简单的应用程序,但我很难处理 url 模板标签。我查找了许多不同的来源并将项目编码了 3 次新的我不知道是什么问题任何建议都是很大的帮助。 谢谢
C:.
├───nps
│ ├───templates
│ └───__pycache__
└───user
├───migrations
│ └───__pycache__
├───templates
│ └───user
└───__pycache__
nps/urls.py
from django.contrib import admin
from django.urls import path,include
from django.views.generic import TemplateView
#include urls from user-app
urlpatterns = [
path('',TemplateView.as_view(template_name='homepage.html')),
path('user/',include('user.urls')),
path('admin/', admin.site.urls),
]
user/urls.py
from django.urls import path
from . import views as user_views
#define names for the specific urls
urlpatterns = [
path('home/',user_views.home,name='user-home'),
path('login/',user_views.loginPage,name='user-login'),
path('register/',user_views.registerPage,name='user-register')
]
#---------------------------------------- ------------------------------------------#
模板的基本布局
user/templates/user/base.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous">
<title>Document</title>
</head>
<body>
{%block main%}{%endblock main%}
</body>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script>
</html>
home.html 带有导航链接和 url 标签
user/templates/user/home.html
{%extends 'user/base.html'%}
{%block main%}
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-home'%}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-login'%}">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{%url'user-register'%}">Register</a>
</li>
</ul>
{%endblock main%}
#---------------------------------------- ------------------------------------------# 错误信息
TemplateSyntaxError at/user/home
Error during template rendering
你需要在url
和URL之间加一个space,所以`{%url'user-home' %} 而不是 {% <s>url'user-home'</s> %}
:
<ul class="nav justify-content-center">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-home' %}</strong>">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-login' %}</strong>">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="<strong>{% url 'user-register' %}</strong>">Register</a>
</li>
</ul>