蜜罐的简单实现

middleware.py

from django.core.cache import cache
from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin


class LearnMiddleware(MiddlewareMixin):

    def process_request(self, request):

        # print(request.path)

        black_list = cache.get('black_list', [])

        path = request.path

        ip = request.META.get("REMOTE_ADDR")

        # if ip in black_list:
        #     return HttpResponse("小黑,你来干什么")

        if path.startswith("/app/students"):
            mi = request.GET.get("mi")
            if mi:
                black_list.append(ip)
                cache.set("black_list", black_list, timeout=60 * 60 * 24)
                return HttpResponse("非法用户哪里跑")

views.py

def students(request):

    student_list = []

    for i in range(10):
        student_list.append(["小明同学%d" % i, i])

    index = random.randrange(10)

    student_list.insert(index, ["小蜜同学", "10?mi=true"])

    data = {
        "students": student_list,
        "mi": index
    }

    return render(request, 'student_list.html', context=data)


def student(request, pk):

    return HttpResponse("小明同学id%s" % pk)

miguan.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>StudentList</title>
</head>
<body>
<ul>
    {% for student in students %}
        {#            <li><a href="{% url 'app:student' pk=student.1 %}">{{ student.0 }}</a></li>#}
        {% ifequal forloop.counter0 mi %}
            <li style="height: 0; overflow: hidden"><a href="/app/students/{{ student.1 }}">{{ student.0 }}</a></li>
        {% else %}
            <li><a href="/app/students/{{ student.1 }}">{{ student.0 }}</a></li>
        {% endifequal %}
    {% endfor %}

</ul>
</body>
</html>

urls.py

urlpatterns = [
    url(r'^students/$', views.students, name='students'),
    url(r'^students/(?P<pk>\d+)', views.student, name='student'),

   ]

猜你喜欢

转载自blog.csdn.net/weixin_34413103/article/details/87252081
今日推荐