day11 日志功能(扩展)

一、添加路由
查看日志路由 urls.py
模型modes.py

# 日志表
class Log(models.Model):
    id = models.AutoField(primary_key=True)
    ip = models.CharField(max_length=64, verbose_name='访问IP', help_text='访问用户的IP地址')
    time = models.DateTimeField(auto_now_add=True, verbose_name='访问时间', help_text='该用户的访问时刻')
    url = models.CharField(max_length=64, verbose_name='访问的URL', help_text='该用户访问的URL地址')
    device = models.CharField(max_length=256, null=True, verbose_name='访问的浏览器', help_text='该用户是用什么浏览器访问的')
    platform = models.CharField(max_length=256, null=True, verbose_name='访问的系统', help_text='该用户用的是什么操作系统')
    # 定义这个表中默认显示的字段
    def __str__(self):
        return self.ip
    # 定义这个表在admin后台中显示的别名
    class Meta:
        ordering = ['id']
        verbose_name_plural = '日志'
path('log/', views.log, name='log'), 

添加视图函数view.py
添加和查看日志log(其中包含分页器)

from django.core.paginator import Paginator


def log(request):
    log_num = models.Log.objects.count()
    page_num_int = int(request.GET.get('page', 1))
    log_list = models.Log.objects.all()
    paginator = Paginator(log_list, 10)
    if paginator.num_pages > 9:
        if page_num_int - 4 < 1:
            page_range = range(1, 9)
        elif page_num_int + 4 > paginator.num_pages:
            page_range = range(paginator.num_pages - 8, paginator.num_pages + 1)
        else:
            page_range = range(page_num_int - 4, page_num_int + 4)
    else:
        page_range = paginator.page_range
    page = paginator.page(page_num_int)
    return render(request, 'other/Log.html', locals())

前端日志模板Log.html

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://cdn.bootcss.com/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="/media/css/{{ username }}/">
</head>
<body>
<nav class="navbar navbar-inverse">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
                    data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="#">{{ blog.site_title }}</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="active"><a href="#">博客 <span class="sr-only">(current)</span></a></li>
                <li><a href="#">文章</a></li>
                <li class="dropdown">
                    <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                       aria-expanded="false">更多 <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                        <li><a href="/log/">日志</a></li>
                        <li><a href="#">Another action</a></li>
                        <li><a href="#">Something else here</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">Separated link</a></li>
                        <li role="separator" class="divider"></li>
                        <li><a href="#">One more separated link</a></li>
                    </ul>
                </li>
            </ul>
            <form class="navbar-form navbar-left">
                <div class="form-group">
                    <input type="text" class="form-control" placeholder="Search">
                </div>
                <button type="submit" class="btn btn-default">Submit</button>
            </form>
            <ul class="nav navbar-nav navbar-right">
                {% if request.user.is_authenticated %}
                    <li><a href="#">{{ request.user.username }}</a></li>
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
                           aria-expanded="false">更多操作 <span class="caret"></span></a>
                        <ul class="dropdown-menu">
                            <li><a href="#" data-toggle="modal" data-target=".bs-example-modal-lg">修改密码</a></li>
                            <li><a href="/set/avatar/">修改头像</a></li>
                            <li><a href="/backend/">后台管理</a></li>
                            <li role="separator" class="divider"></li>
                            <li><a href="{% url 'logout' %}">退出登陆</a></li>
                        </ul>

                        <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog"
                             aria-labelledby="myLargeModalLabel">
                            <div class="modal-dialog modal-lg" role="document">
                                <div class="modal-content">
                                    <h1 class="text-center">修改密码</h1>
                                    <div class="row">
                                        <div class="col-md-8 col-md-offset-2">
                                            <div class="form-group">
                                                <label for="">用户名</label>
                                                <input type="text" disabled value="{{ request.user.username }}"
                                                       class="form-control">
                                            </div>
                                            <div class="form-group">
                                                <label for="">原密码</label>
                                                <input type="password" id="id_old_password" class="form-control">
                                            </div>
                                            <div class="form-group">
                                                <label for="">新密码</label>
                                                <input type="password" id="id_new_password" class="form-control">
                                            </div>
                                            <div class="form-group">
                                                <label for="">确认密码</label>
                                                <input type="password" id="id_confirm_password" class="form-control">
                                            </div>
                                            <div class="modal-footer">
                                                <button type="button" class="btn btn-default" data-dismiss="modal">取消
                                                </button>
                                                <button class="btn btn-primary" id="id_edit">修改</button>
                                                <span style="color: red" id="password_error"></span>
                                            </div>
                                            <br>
                                            <br>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </li>
                {% else %}
                    <li><a href="{% url 'reg' %}">注册</a></li>
                    <li><a href="{% url 'login' %}">登陆</a></li>
                {% endif %}
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
<div class="container-fluid">
    <div class="row">
        <div class="col-md-3">
        </div>
        <div class="col-md-9">
            <div class="alert alert-success">当前日志:{{ log_num }}条</div>
            <table class="table table-hover text-center table-bordered bg-white-95">
                <thead>
                <tr style="font-weight: bold">
                    <td>ID</td>
                    <td>IP地址</td>
                    <td>访问地址</td>
                    <td>访问时刻</td>
                    <td>访问设备</td>
                    <td>访问平台</td>
                </tr>
                </thead>
                <tbody>
                {% for log in page.object_list %}
                    <tr>
                        <td>{{ forloop.counter }}</td>
                        <td>{{ log.ip }}</td>
                        <td>{{ log.url }}</td>
                        <td>{{ log.time }}</td>
                        <td>{{ log.device }}</td>
                        <td>{{ log.platform }}</td>
                    </tr>
                {% empty %}
                    <tr>
                        <td colspan="7" class="bg-white">
                            <div class="alert alert-danger no-info">日志
                            </div>
                        </td>
                    </tr>
                {% endfor %}
                </tbody>
            </table>
            <div class="d-flex justify-content-center">
                <nav aria-label="Page navigation example">
                    <ul class="pagination">
                        {% if page.has_previous %}
                            <li class="page-item">
                                <a class="page-link" href="{% url 'log' %}?page={{ start }}">首页</a>
                            </li>
                            <li class="page-item">
                                <a class="page-link" href="{% url 'log' %}?page={{ page.previous_page_number }}">上一页</a>
                            </li>
                        {% else %}
                            <li class="page-item disabled">
                                <a class="page-link" href="#">首页</a>
                            </li>
                            <li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>
                        {% endif %}

                        {% for page_num in page_range %}
                            {% if page_num_int == page_num %}
                                <li class="page-item active">
                                    <a class="page-link" href="{% url 'log' %}?page={{ page_num }}">{{ page_num }}</a>
                                </li>
                            {% else %}
                                <li class="page-item">
                                    <a class="page-link" href="{% url 'log' %}?page={{ page_num }}">{{ page_num }}</a>
                                </li>
                            {% endif %}

                        {% endfor %}

                        {% if page.has_next %}
                            <li class="page-item">
                                <a class="page-link" href="{% url 'log' %}?page={{ page.next_page_number }}">下一页</a>
                            </li>
                            <li class="page-item">
                                <a class="page-link" href="{% url 'log' %}?page={{ end }}">尾页</a>
                            </li>
                        {% else %}
                            <li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>
                            <li class="page-item disabled">
                                <a class="page-link" href="#">尾页</a>
                            </li>
                        {% endif %}
                    </ul>
                </nav>
            </div>

        </div>
    </div>
</div>

</body>
</html>

posted @ 2021-12-12 13:46  simon_T  阅读(70)  评论(0编辑  收藏  举报