【问题标题】:Bootstrap collapse issue in DjangoDjango中的引导崩溃问题
【发布时间】:2016-01-09 02:59:53
【问题描述】:

我正在尝试在 Django 中使用引导页面,但不幸的是列表组项目的折叠不起作用。

来自html的相关部分:

<link rel="stylesheet" href="{% static 'conf/css/bootstrap.css' %}">

      <div class="panel panel-default">
        <div class="panel-heading" role="tab" id="headingTwo">
          <h4 class="panel-title">
            <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
              Header
            </a>
          </h4>
        </div>
        <div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
          <div class="list-group">
            <a href="#" class="list-group-item">Item1</a>
            <a href="#" class="list-group-item">Item2</a>
          </div>
        </div>
      </div>

<!-- jQuery (necessary for Bootstrap's JavaScript plugins) --> 
<script src="{% static 'conf/js/jquery-1.11.2.min.js' %}"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="{% static 'conf/js/bootstrap.min.js' %}"></script>

单击标题时,“#collapseTwo”信号被发送到浏览器到我的 django 应用程序,而不是折叠列表(例如:127.0.0.1:8000/conf/#collapseTwo”)。外部 django 折叠工作正常. 在 django 中,除了折叠之外的其他一切都可以正常工作(css、链接、图像等)

django 项目中的 URL 模式:

urlpatterns = [
url(r'^$', RedirectView.as_view(url='conf', permanent=False), name='index'),
url(r'^accounts/login/$', 'django.contrib.auth.views.login', {'template_name': 'admin/login.html'}),
url(r'^accounts/logout/$', 'django.contrib.auth.views.logout'),
url(r'^admin/', include(admin.site.urls)),
url(r'^conf/', include('conf.urls')),
]

名为“conf”的应用的 URL 模式:

urlpatterns = [
url(r'^$', views.index, name='index'),
]

主视图的关键部分:

def index(request):

    object = AudioSetting.objects.get(pk=1)
    DefaultText = object.text   
    context = {'DefaultText': DefaultText,}

    template = "conf/index.html"

    return render(request, template, context)

您能否建议如何在 django 中进行折叠工作?

编辑:渲染页面时来自django服务器的消息,包括正在使用的js和css:

System check identified no issues (0 silenced).
October 11, 2015 - 20:51:06
Django version 1.8.5, using settings 'project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[11/Oct/2015 20:51:14] "GET / HTTP/1.1" 302 0
[11/Oct/2015 20:51:14] "GET /conf HTTP/1.1" 301 0
[11/Oct/2015 20:51:14] "GET /conf/ HTTP/1.1" 200 9041
[11/Oct/2015 20:51:14] "GET /static/conf/css/bootstrap.css HTTP/1.1" 304 0
[11/Oct/2015 20:51:14] "GET /static/conf/img/logo.jpg HTTP/1.1" 304 0
[11/Oct/2015 20:51:15] "GET /static/conf/js/jquery-1.11.2.min.js HTTP/1.1" 304 0

【问题讨论】:

标签: python django twitter-bootstrap python-3.x


【解决方案1】:

你根本没有使用锚标记。只需将您的 &lt;a&gt; 标签替换为 &lt;span&gt; 即可:

...
<span class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
   Header
</span>
...

结果完全相同,但会有效防止 django 在用户打开或关闭可折叠组件时重定向。要保持光标,即悬停“手”,请添加此 CSS:

span[role="button"] {
    cursor: pointer;
}

演示 -> http://jsfiddle.net/ae3se1s5/

【讨论】:

  • 谢谢@davidkonrad!演示链接也可以在我的浏览器中完美运行,但是当我在 Django 中的 html 页面上执行相同操作时,它不起作用,仅使用 span 也不起作用。也许这是@Nick提到的关于js潜在冲突/问题的方向。
  • @Zorgmorduk - 除了不需要的重定向 django 本身不可能是原因 - 它似乎根本没有加载引导程序?尝试使用带有绝对路径的 CDN,如 &lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"&gt;&lt;/script&gt;&lt;link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"&gt; 与 jQuery 相同 -> code.jquery.com -
  • 我试过@davidkonrad,但不幸的是没有帮助。我已经包含了 jQuery 的 code.jquery.com/jquery-latest.js 和你的 css 和 js 的两个链接。我认为它与 django 相关的原因,因为如果我只是在添加 django 命令之前在浏览器中将 html 作为文件打开,它就可以正常工作。
【解决方案2】:

我已经尝试了您的 html 代码 w3schools 实时编辑器,并且折叠工作正常。

因此,在您的情况下,问题可能出在其他一些在单击元素时不会阻止默认事件处理的 js 代码,因为引导程序本身会执行此操作:

https://github.com/twbs/bootstrap/blob/master/js/collapse.js#L202

因此,请检查其他 js 文件和浏览器控制台是否有任何可能阻止引导程序处理折叠功能的错误。

【讨论】:

  • 谢谢@Nick!也许真的是js冲突,我正在进一步调查。我打算只使用官方的 bootsrap js,但它不是轻量级版本。 django 服务器表示没有使用其他 js 文件,我将在编辑中发布其反馈。
  • @Zorgmorduk 您可以尝试使用未缩小的 bootstrap.js 文件并在浏览器控制台中调试折叠功能。在这种情况下,您将能够看到它是否真的有效。
  • 我也尝试了@Nick 并没有缩小 bootstrap.js,但仍然没有工作。我正在为 django 项目使用树莓派,该项目有 Epiphany 浏览器而没有控制台(我知道),但会尝试以某种方式进行调试。
  • 啊,还有一件事@davidkonrad 和 Nick:我还安装了 pypi.python.org/pypi/django-twitter-bootstrap。那是针对管理部分的,但它可能会干扰吗?我应该找到一种调试方法。
  • @davidkonrad 和尼克:感谢你们俩的帮助!你让我相信问题不在于代码本身。最后,我最终在另一个树莓派上从头开始重新设置了整个项目。我无法确定我在前一个案例中可能搞砸了什么,但现在使用相同的 html 和 django 设置一切正常。
猜你喜欢
  • 1970-01-01
  • 2012-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-07-02
  • 2015-08-10
  • 1970-01-01
  • 2013-10-11
  • 2018-09-13
相关资源
最近更新 更多