python - 如果我在导航栏上单击两次相同的按钮,如何创建不会引发 404 错误的动态 url?
问题描述
我目前正在做我的第一个网页设计,我的网址遇到了一些问题。我想要做的是一个导航栏,当你点击按钮时,它会将你重定向到一个页面。但是,如果我在导航栏按钮上单击两次,则会引发问题,因为程序仍在读取另一个 url。这里有一些照片,你可以理解。[当我点击翻译器按钮时,网址会添加翻译器。
现在如果我点击主页按钮,我仍然在 url 中有翻译器/,所以它会引发另一个 404 错误。
我的问题是,我怎样才能做一个动态网址,以便当我点击另一个按钮时,它不会出现 404 错误并将我重定向到该页面。
这是导航栏的代码
<nav class="navbar fixed-top navbar-expand-lg navbar-light" style='background-color: snow;'>
<div class = 'container'>
<a class="navbar-brand" href="#">
<img src="{% static ''%}" width="70" height="30" class="d-inline-block align-top" alt="">
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo01">
<ul class="navbar-nav mx-auto">
<li class="nav-item active">
<a class="nav-link" href='home'>Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="translator">Translator</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" >Process</a>
</li>
</ul>
通用 urls.py 导航栏
from django.contrib import admin
from django.urls import path, include
from translator.views import home_view
urlpatterns = [
path('translator/', include('translator.urls')),
path('', home_view, name='home'),
path('admin/', admin.site.urls),
]
和翻译器 urls.py
from django.urls import path
from .views import translator_view
app_name = 'translator'
urlpatterns = [
path('', translator_view, name='translator'),
]
解决方案
有一个内置的模板标签:url
返回与给定视图和可选参数匹配的绝对路径引用(没有域名的 URL)。
因此,对于位于主项目中的任何模式urls.py
,您可以使用它们的模式名称来反转它们,例如:
urls.py:
urlpatterns = [
path('', views.home, name='home')
]
.html:
<a href="{% url 'home' %}">Home</a> {# outputs <a href="/">Home</a> #}
笔记
如果您有每个应用程序的 url,例如您的translate.urls,则需要在包含它的 url 时为应用程序提供一个命名空间,例如:
urls.py:
urlpatterns = [
path('translator/', include(('translator.urls', 'translator'), namespace='translator'))
]
翻译器.urls.py:
urlpatterns = [
path('', translator_view, name='index'),
]
.html:
<a href="{% url 'translator:index' %}">Translator</a> {# outputs <a href="/translator/">Translator</a> #}
推荐阅读
- image - How do we display an image in a SwiftUI playground?
- java - How to get mic data when other apps are using Mic?
- java - Hibernate:多个表,同一个对象
- c++ - 带有 for 循环的 goto() 函数
- python - Making dynamic ajax requests in Python
- python - Getting a ValueError in tensorflow 2.x: ValueError: Shapes (50, 6) and (50, 100) are incompatible
- reactjs - mocking a function in jest to test in typescript
- python - 获取消息的传递状态已通过 Telethon _ Telegram telethon 发送
- ruby-on-rails - 查询 JSON 字段以按变体类型获取产品变体
- odoo - 看板视图继承与 QCode