Django网络应用实践(3)-button按钮点击事件+超链接跳转及分页+路由管理

目录

一、button按钮点击事件

二、超链接跳转

1、超链接跳转

2、分页

(1)、前端代码

(2)、后端代码

三、路由管理

1、一级路由

2、二级路由


一、button按钮点击事件

        想要实现点击button按钮后触发某个事件,这就得使用js的知识,将按钮与具体的某个事件绑定,当点击该按钮时触发这一事件。

        具体代码如下:

html的代码中,需要对button中id的参数进行明确,id明确之后才能绑定事件。

op1等是后台传来的参数,用来对点击后的按钮进行高亮提醒。

 <div class="container">
            <button type="button" id="button1"  class="{{ op1 }} btn btn-info">原始数据</button>
            <button type="button" id="button2"  class="{{ op2 }} btn btn-info">分析数据</button>
            <button type="button" id="button3"  class="{{ op3 }} btn btn-info">点赞Top10</button>
            <button type="button" id="button4"  class="{{ op4 }} btn btn-info">评分Top10</button>
    </div>

         js的代码中,需要明确的是点击该按钮后所调用的路由,此时的路由不是一个具体的页面,而是在后台中具体处理某一事件的一个自定义函数

$('#button1').click(function () {
        location.href = '/ly/data'
    })
    $('#button2').click(function () {
        location.href = '/ly/fen_data'
    })
    $('#button3').click(function () {
        location.href = '/ly/dian_data'
    })
    $('#button4').click(function () {
        location.href = '/ly/score_data'
    })

二、超链接跳转

1、超链接跳转

<a href="/ly/lishi">

        与button跳转一样,这里跳转的还是一个执行某个功能的一个自定义函数,这个函数会负责将静态页面渲染出来。

2、分页

(1)、前端代码

<div class="temp">
        <ul class="pagination">
            <li><a href="/ly/data/?page=1">首页</a></li>
            {% if messages.has_previous %}
                <li><a href="/ly/data/?page={{ messages.previous_page_number }}">上一页</a></li>
            {% endif %}

            {% for num in messages.paginator.page_range %}
                <li><a href="/ly/data/?page={{ num }}">{{ num }}</a></li>
            {% endfor %}

            {% if messages.has_next %}
                <li><a href="/ly/data/?page={{ messages.next_page_number }}">下一页</a></li>
            {% endif %}
            <li><a href="/ly/data/?page={{ messages.paginator.num_pages }}">尾页</a></li>
        </ul>
    </div>

(2)、后端代码

def data(res):
    messages = table1.objects.all()  # 获取全部数据
    limit = 20
    paginator = Paginator(messages, limit)  # 按每页10条分页
    page = res.GET.get('page', '1')  # 默认跳转到第一页
    result = paginator.page(page)
    return render(res, 'data.html', {'messages': result,'op1':'active'})

三、路由管理

        路由管理最好是分级管理,不要将所有的路由写在一个文件中。

1、一级路由

        我的一级路由写在创建项目后自动生成的urls.py 中

from django.contrib import admin
from django.urls import path,include
from app1.views import sear_index

urlpatterns = [
    path('admin/', admin.site.urls),
    path('ly/',include('app1.urls')),
    path('',sear_index)
]

2、二级路由

        我的二级路由写在app目录中的urls.py中,这个文件需要自己创建

        view是视图文件,我将所有的路由所使用的自定义函数全部写在这个文件之中。

        re_path是带有正则表达式作用的,可以使用正则表达式的一些写法来识别对应的一些路由。

from django.urls import path, re_path
from app1 import views

urlpatterns = [
    path('sear', views.sear),
    path('index', views.index),
    path('data', views.data),
    path('del_', views.del_),
    path('ly/sear', views.sear),
    re_path(r'^data', views.data),
    re_path(r'^fen_data', views.data_fen),
    path('dian_data', views.data_dian),
    path('score_data', views.data_score),
    path('lishi', views.lishi),
    path('seek', views.seek),
    re_path(r'^lishi', views.lishi),
    path('sousuo', views.sousuo),
]

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django 中,要在点击按钮后运行本地的 Python 程序并将结果输出到前端 input 元素中,可以通过以下步骤实现: 1. 在 HTML 模板中定义一个 input 元素和一个按钮元素: ```html <input type="text" id="output"> <button onclick="runPython()">Run Python</button> ``` 2. 在 JavaScript 中定义一个函数,该函数将使用 AJAX 发送 POST 请求来调用 Django 视图函数,并将返回的结果设置为 input 元素的值: ```javascript function runPython() { var output = document.getElementById("output"); var xhr = new XMLHttpRequest(); xhr.open("POST", "/run-python/", true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { output.value = xhr.responseText; } }; xhr.send(); } ``` 在这个例子中,函数 `runPython()` 将使用 AJAX 发送 POST 请求到 URL `/run-python/`,并将返回的结果设置为 input 元素的值。 3. 在 Django 中定义一个视图函数,该函数将运行本地的 Python 程序并返回结果: ```python import subprocess from django.http import JsonResponse def run_python(request): result = subprocess.check_output(["python", "/path/to/your/script.py"]) return JsonResponse({'result': result.decode('utf-8')}) ``` 在这个例子中,视图函数 `run_python()` 将运行位于 `/path/to/your/script.py` 的 Python 程序,并将结果作为 JSON 响应返回。 4. 在 Django 的 URL 配置中将视图函数映射到 URL: ```python from django.urls import path from . import views urlpatterns = [ path('run-python/', views.run_python, name='run_python'), ] ``` 这样,当用户单击 "Run Python" 按钮时,它将触发 `runPython()` 函数,并使用 AJAX 发送 POST 请求到 `/run-python/` URL。Django 将调用视图函数 `run_python()` 并返回结果。然后,JavaScript 将结果设置为 input 元素的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值