本文详解为何仅添加 html 模板和导航栏链接无法访问页面,以及如何在 flask 或 django 中正确定义路由与视图,使 navbar 链接(如 `/öppettider`)成功渲
染对应模板。
导航栏中的 Öppettider 看似简单,但它只是一个前端超链接——点击后浏览器会向服务器发起对 /öppettider 这个 URL 的 HTTP 请求。但服务器是否能响应这个请求,完全取决于后端是否已注册该路径并指定了处理逻辑。仅在 templates/ 目录下新建 öppettider.html 文件是不够的,这就像建好了一扇门(HTML),却没修通往它的路(路由)和开门的人(视图函数)。
需在主应用文件(如 app.py)中定义路由和视图函数:
from flask import Flask, render_template
app = Flask(__name__)
# ✅ 必须添加此路由,URL 路径与 navbar href 严格一致
@app.route('/öppettider')
def öppettider_view():
return render_template('öppettider.html') # 注意:文件名需与 templates/ 下实际名称一致⚠️ 注意事项:
需两步操作:在 views.py 中编写视图函数,在 urls.py 中注册路由。
from django.shortcuts import render
def öppettider_view(request): return render(request, 'öppettider.html') # context 可选,如需传数据可加字典参数
2. **`urls.py`(添加 URL 映射)**:
```python
from django.urls import path
from . import views
urlpatterns = [
# ... 其他路径
path('öppettider/', views.öppettider_view, name='opentider'), # name 可选,用于 {% url %} 模板标签
]✅ 提示:Django 项目通常有主 urls.py(项目级)和应用级 urls.py,请确保将新路径包含在最终生效的 urlpatterns 中(常通过 include() 引入应用路由)。
? 进阶建议:为避免硬编码 URL,Django 推荐在模板中使用 {% url 'opentider' %} 替代 /öppettider/;Flask 可用 url_for('öppettider_view')。这样即使日后修改路径,也只需改一处。
完成以上配置后,点击导航栏“Öppettider”,服务器将正确接收请求、执行视图、渲染模板——你的图片(或其他内容)就能如期展示了。