def login(request): if request.method == 'GET': return render(request, 'login.html') else: user_name = request.POST['name'] pwd = request.POST['pass'] user = Users.objects.filter(user=user_name) if len(user): user = user[0] if check_password(password=pwd, encoded=user.password): request.session['login_user'] = user_name return redirect('/table') return render(request, 'login.html', {'msg': -1})我能否向这样写一段代码实现点击“用户信息”按钮跳转到用户信息页面table/users
时间: 2023-12-14 19:36:52 浏览: 29
是的,您可以通过以下方式实现:
1. 在您的 `urls.py` 文件中添加一个 URL 模式,例如:
```python
from django.urls import path
from . import views
urlpatterns = [
# ... 其他 URL 模式 ...
path('table/users/', views.user_info, name='user_info'),
# ... 其他 URL 模式 ...
]
```
其中 `views.user_info` 是您要编写的视图函数,`name='user_info'` 是该 URL 模式的名称,以便在模板中使用。
2. 在您的模板中添加一个链接到该 URL 的按钮,例如:
```html
<a href="{% url 'user_info' %}" class="btn btn-primary">用户信息</a>
```
其中 `{% url 'user_info' %}` 使用该 URL 模式的名称来生成链接。
3. 编写 `views.user_info` 视图函数,例如:
```python
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import Users
@login_required
def user_info(request):
users = Users.objects.all()
return render(request, 'user_info.html', {'users': users})
```
其中 `@login_required` 装饰器将确保用户已登录,`Users.objects.all()` 将获取所有用户,`'user_info.html'` 是您的用户信息模板,`{'users': users}` 是要传递给模板的上下文数据。
4. 创建用户信息模板 `user_info.html`,例如:
```html
{% extends 'base.html' %}
{% block content %}
<h1>用户信息</h1>
<table class="table">
<thead>
<tr>
<th>用户名</th>
<th>密码</th>
<th>邮箱</th>
<!-- 其他用户信息字段 -->
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ user.user }}</td>
<td>{{ user.password }}</td>
<td>{{ user.email }}</td>
<!-- 其他用户信息字段 -->
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
```
其中 `{% extends 'base.html' %}` 表示该模板扩展了 `base.html` 模板,`{% block content %}` 和 `{% endblock %}` 是一个占位符,用于在扩展模板中填充内容,`{% for user in users %}` 和 `{% endfor %}` 是一个循环,用于显示所有用户信息。