当前位置: 首页 > news >正文

游戏软件网站开发深圳网络营销网站设计

游戏软件网站开发,深圳网络营销网站设计,做网站会出现哪些问题,广东企业网站建设公司价格要求: ① 页面写入超链接,获取所有数据item,显示在另一个页面,1min内,即使数据有变化,页面内容不变,1min后点击超链接可获取最新信息; ② 使用middleware完成用户请求路径判断 &am…

要求:

① 页面写入超链接,获取所有数据item,显示在另一个页面,1min内,即使数据有变化,页面内容不变,1min后点击超链接可获取最新信息;

② 使用middleware完成用户请求路径判断 (request.path)。如果是“/schedule/select/”或“/select/contact/”,判断是否用户登录,否 则重定向到login页面。

结果:

代码:

python manage.py startapp pro6_app

注册app

path('pro6/', include('pro6_app.urls', namespace="pro6")),

views //

import datetimefrom django.core.paginator import Paginator, InvalidPage
from django.shortcuts import render
from django.views.decorators.cache import cache_pagefrom djangoProject.settings import PAGE_SIZE
from pro6_app.models import Departmentdef home(request):return render(request, "home.html")@cache_page(60)
def show(request):ds = Department.get_all()page_num = request.GET.get("page_num", default=1)paginator = Paginator(ds, PAGE_SIZE)try:data = paginator.page(page_num)except InvalidPage:data = paginator.page(1)time = datetime.datetime.now()return render(request, "show.html", {"data": data, "paginator": paginator, "time": time})

setting //

PAGE_SIZE = 3

urls //

from django.urls import pathfrom .views import *app_name = "pro6"urlpatterns = [path('home/', home, name="home"),path('show/', show, name="show"),
]

models //

# 迁移,添加测试数据

from django.db import modelsclass Department(models.Model):name = models.CharField(max_length=64, verbose_name="科室")month = models.CharField(max_length=2, verbose_name="月")def __str__(self):return f"{self.name}__{self.month}"class Meta:verbose_name = "安排表"verbose_name_plural = verbose_name + 's'@classmethoddef get_all(cls):return cls.objects.all()

admin //

from django.contrib import adminfrom pro6_app.models import Departmentmodels = [Department
]admin.site.register(models)

templates //

<head><meta charset="UTF-8"><title>home</title>
</head>
<body>
<a href="{% url 'pro6:show' %}"><input type="button" value="Get data">
</a>
</body>
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Depars</title>
</head>
<body>
<table border="1" align="center" cellpadding="0" cellspacing="0"><thead><tr><th>depar</th><th>month</th><th>year</th><th>remarks</th></tr></thead>{% for i in data %}<tr><td>{{ i.name }}</td><td>{{ i.month }}</td><td>2024</td><td>null</td></tr>{% endfor %}
</table>
<center><a href="{% url 'pro6:show' %}?page_num=1" style="color:orangered">First</a>{% if data.has_previous %}<a href="{% url 'pro6:show' %}?page_num={{ data.previous_page_number }}" style="color:orangered">Previous</a>{% else %}<a href="javascript:alert('We are at the beginning.')">Previous</a>{% endif %}{{ data.number }}/{{ paginator.num_pages }}{% if data.has_next %}<a href="{% url 'pro6:show' %}?page_num={{ data.next_page_number }}" style="color:orangered">Next</a>{% else %}<a href="javascript:alert('Boundary of the void.')">Next</a>{% endif %}<a href="{% url 'pro6:show' %}?page_num={{ paginator.num_pages }}" style="color:orangered">Last</a>
</center>
<center>
<a href="{% url 'pro6:show' %}"><input type="button" value="Refresh">
</a>
<hr>
<h6>Help with scheduling troubles.</h6>
<h6>Have a nice day.</h6>
<h6>{{ time|date:'H:i:s Y-m-d' }}. Shanghai, China, Asia.</h6></center>
</body>
</html>

结果:

1)未登录直接进入test页面的contact或select按钮,会跳转到登录页面

2)正常流程:注册成功→登录成功→test页面可select或contact(setting设置token过期时间是1day)

admin后台可见保存的加密后的token即pwd,没有保存用户原始密码。

代码:

(沿用上述pro6_app, 已注册)

models //

# admin 注册

class User(models.Model):name = models.CharField(max_length=32, unique=True, verbose_name="Name")pwd = models.CharField(max_length=128, verbose_name="Password")token = models.CharField(max_length=128, null=True)class Meta:verbose_name = "网页用户"verbose_name_plural = verbose_name + '们'def __str__(self):return self.name@classmethoddef get_list(cls, **kwargs):filters = {}if kwargs.get("name"):filters["name"] = kwargs.get("name")if kwargs.get("pwd"):filters["pwd"] = kwargs.get("pwd")if kwargs.get("token"):filters["token"] = kwargs.get("token")return cls.objects.filter(**filters)@classmethoddef create_one(cls, **kwargs):return cls.objects.create(name=kwargs.get("name"),pwd=kwargs.get("pwd"))

views //

# SESSION_COOKIE_AGE = 3600 * 24 # 60 * 60 * 24

def register(request):if request.method == "GET":return render(request, "pro6_regis.html")if request.method == "POST":name = request.POST.get("name")pwd = hash(request.POST.get("pwd"))User.create_one(**{"name": name, "pwd": pwd})return redirect(reverse('pro6:login'))def login(request):if request.method == "GET":return render(request, "pro6_login.html")if request.method == "POST":name = request.POST.get("name")pwd = hash(request.POST.get("pwd"))filters = {"name": name,"pwd": pwd}users = User.get_list(**filters)if users:user = users.first()md5 = hashlib.md5()md5.update(name.encode("utf-8"))token = md5.hexdigest() + str(time.time())user.token = tokenuser.save()response = redirect(reverse('pro6:test'))response.set_cookie("user_token", token)return responseelse:return HttpResponse("<h5 style='color: orange'>Wrong Info..</h5>")def test_view(request):return render(request, "pro6_test.html")def contact_view(request):return HttpResponse("<h5 style='color:orange'>get in touch</h5>")def select_view(request):return HttpResponse("<h5 style='color:orange'>select it</h5>")def del_user_token(request):response = redirect(reverse('pro6:test'))response.delete_cookie("user_token")return response

templates //

register

<form action="" method="post">{% csrf_token %}UserName:<input type="text" name="name"> <br>Password:<input type="password" name="pwd"> <br><input type="submit" value="Register">
</form>

login

<form action="" method="post">{% csrf_token %}UserName:<input type="text" name="name"> <br>Password:<input type="password" name="pwd"> <br><input type="submit" value="Login">
</form>

test

<body>
<a href="{% url 'pro6:select' %}">select it</a>
<br>
<a href="{% url 'pro6:contact' %}">contact it</a>
<br>
<a href="{% url 'pro6:del' %}" style='color:purple' >delete user token</a>
</body>

urls //

    path('regis/', register, name="regis"),path('login/', login, name="login"),path('test/', test_view, name="test"),path('schedule/contact/', contact_view, name='contact'),path('schedule/select/', select_view, name='select'),path('del/', del_user_token, name='del'),

middleware //

# setting注册

class LoginMiddleWare(MiddlewareMixin):def process_request(self, request):target_path = ['/pro6/schedule/select/','/pro6/schedule/contact/']print(request.path)if request.path in target_path:print('in judge flag')try:user_token = request.COOKIES["user_token"]users = User.get_list(token=user_token)print('verified')if not users:return HttpResponse("Token expired.")except:return redirect(reverse("pro6:login"))

http://www.tj-hxxt.cn/news/79571.html

相关文章:

  • 参考文献 教学网站建设产品推广策略怎么写
  • 网站开发怎么学习纹绣培训班一般价格多少
  • 云尚网站建设推广普通话手抄报内容大全资料
  • wordpress响应缓慢windows优化大师win10
  • 昆明自助建站软件深圳百度seo代理
  • php动态网站代做seo专员工作容易学吗
  • 音乐介绍网站怎么做的常用的seo查询工具
  • 主做收影视出版的小说网站seo静态页源码
  • 帮企业做网站前景怎么样爱站关键词挖掘工具
  • 司局网站维护廉政风险建设我想创建一个网络平台
  • 濮阳做网站推广的公司2345网址大全设主页
  • 开封做网站哪家好热狗seo外包
  • ps上做网站平台推广文案
  • 网站建设 南京免费合作推广
  • 权威的合肥网站推广2023疫情最新情况
  • 江油网站建设最新的网络营销的案例
  • 服装设计怎么学seo发展前景怎么样啊
  • 深圳网络建设网站北京百度seo
  • 温州网站建设推广专家百度客服电话人工服务热线
  • 图列说明网站开发的流程2023知名品牌营销案例100例
  • 做网站外包公司有哪些个人网站模板免费下载
  • 织梦系统网站首页空白十堰seo排名公司
  • php网站开发demo高端企业建站公司
  • 有没有帮忙做网站合肥网络优化推广公司
  • 关于网站开发制作的相关科技杂志的网站宁波seo外包哪个品牌好
  • 品牌网站制作流程图互联网推广方案怎么写
  • 无锡网站排名优化报价优化设计四年级上册数学答案
  • 网站建设基础关键词排名快照优化
  • 胶州专业网站建设公司陕西网站建设网络公司
  • WordPress工具站点域名注册服务网站