满眼喜欢990 2024-05-09 18:39 采纳率: 0%
浏览 4

python27 django框架输出界面优化求解

想问一下我使用的django框架,做的主机扫描,扫描之后把结果存在MySQL数据库中,我除了在view.py用以下这种直接的代码输出我的结果之外,还能怎样优化我的输出界面

import activeipscan
     target=request.GET['target']
     activeipscan.main(target)
     # portScan..portScan(target)
     try:
          db=pymysql.connect('localhost','root','root','test')
          cursor=db.cursor()
          sqlactiveip='select * from activeipscan'
          cursor.execute(sqlactiveip)
          tmp=cursor.fetchall()
     except Exception,e:
          print 'activeipscan--error!',e
     ttmp = ''
     ttmp = ttmp + '<h1>活跃主机扫描</br></h1>' + '<a href="/">返回主页</a></br>'
     for i in tmp:
          print i
          ttmp = '<h2>' + ttmp + str(i) + '</br></h2>'
     ttmp=ttmp.replace("'",'')
     ttmp=ttmp.replace(",",'')
     ttmp=ttmp.replace("(",'')
     ttmp=ttmp.replace(")",'')
     message = ttmp
     db.close()
     return HttpResponse(message)

  • 写回答

3条回答 默认 最新

  • 笑面虎 2024-05-09 18:39
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【问题概括】:你想要优化使用Django框架开发的主机扫描应用的输出界面。目前,你通过在view.py中直接拼接HTML字符串来展示扫描结果,希望有更优雅的解决方案。

    【问题出现原因】:直接在Python代码中拼接HTML字符串会导致代码难以维护,且不便于分离前端和后端逻辑,这在Web开发中并不是一个好的实践。

    【问题解决方案】:为了优化输出界面,你可以使用Django的模板系统。Django模板系统可以让你将HTML代码与Python逻辑分离,使代码更加清晰和易于维护。

    【提供代码】:以下是使用Django模板系统的示例代码:

    首先,你需要创建一个HTML模板文件,例如scan_results.html,并放置在相应的templates目录中:

    <!-- scan_results.html -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>活跃主机扫描结果</title>
    </head>
    <body>
        <h1>活跃主机扫描</h1>
        <a href="/">返回主页</a>
        {% for result in results %}
            <h2>{{ result }}</h2>
        {% endfor %}
    </body>
    </html>
    

    然后,修改你的view.py文件,使用模板来渲染结果:

    # views.py
    from django.shortcuts import render
    import activeipscan
    import pymysql
    
    def scan_view(request):
        target = request.GET.get('target', '')  # 使用get方法更安全
        activeipscan.main(target)
        
        try:
            db = pymysql.connect('localhost', 'root', 'root', 'test')
            cursor = db.cursor()
            sqlactiveip = 'SELECT * FROM activeipscan'
            cursor.execute(sqlactiveip)
            tmp = cursor.fetchall()
        except Exception as e:
            print('activeipscan--error!', e)
        finally:
            db.close()  # 确保数据库连接关闭
    
        # 将查询结果转换为字符串列表
        results = [', '.join(map(str, i)) for i in tmp]
        
        # 使用模板渲染结果
        return render(request, 'scan_results.html', {'results': results})
    

    【代码运行方式】:确保你的Django项目配置了正确的TEMPLATES设置,包括DIRS设置指向你的模板目录。然后,通过访问对应的URL路由来运行你的视图。

    【代码预期运行结果】:当你访问这个视图时,它将显示一个包含所有活跃主机扫描结果的网页,每个结果都在一个<h2>标签中。

    【推荐相关链接】:

    • Django官方文档:https://www.djangoproject.com/
    • Django模板语言文档:https://docs.djangoproject.com/en/stable/topics/templates/
    • pymysql文档:https://pymysql.readthedocs.io/en/latest/
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月9日

悬赏问题

  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑