在django框架下用bootstrap写base.html点击base.html中的菜单栏怎么显示出logon.html中的内容
时间: 2024-05-12 18:13:37 浏览: 111
基于bootstrap登录表单模板
3星 · 编辑精心推荐
可以使用Django的模板继承功能来实现这一功能。具体步骤如下:
1. 创建一个名为 `base.html` 的模板文件,其中包含菜单栏和一个占位符,用于显示子模板的内容。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{% block title %} {% endblock %}</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<a class="navbar-brand" href="#">My Website</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="{% url 'home' %}">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'about' %}">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{% url 'contact' %}">Contact</a>
</li>
</ul>
</div>
</nav>
<div class="container">
{% block content %}{% endblock %}
</div>
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js"></script>
</body>
</html>
```
2. 创建一个名为 `logon.html` 的子模板文件,其中包含登录表单和其他内容。
```html
{% extends 'base.html' %}
{% block title %}Logon{% endblock %}
{% block content %}
<h1>Logon</h1>
<form method="post">
{% csrf_token %}
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password">
</div>
<button type="submit" class="btn btn-primary">Log In</button>
</form>
{% endblock %}
```
3. 创建一个名为 `views.py` 的视图文件,其中定义一个名为 `logon` 的视图函数,用于渲染 `logon.html` 子模板。
```python
from django.shortcuts import render
def logon(request):
return render(request, 'logon.html')
```
4. 在 `urls.py` 文件中定义一个名为 `logon` 的 URL 模式,用于将 `/logon` 请求映射到 `logon` 视图函数。
```python
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='home'),
path('about/', views.about, name='about'),
path('contact/', views.contact, name='contact'),
path('logon/', views.logon, name='logon'),
]
```
现在,当用户点击菜单栏中的 "Logon" 链接时,将显示 `logon.html` 子模板的内容,该子模板将继承 `base.html` 模板中的菜单栏和其他共享元素。
阅读全文