【问题标题】:django auto slug in model forms like prepopulated-fields in django admin模型形式中的 django auto slug,例如 django admin 中的预填充字段
【发布时间】:2010-11-26 04:22:55
【问题描述】:

有没有办法在标准模型表单中使用 django 管理站点中的预填充字段来获得相同的结果

【问题讨论】:

    标签: django slug django-forms


    【解决方案1】:

    嗯,django 是开源的,所以如果你想复制某些行为,你可以read the code 并选择你喜欢的东西。例如,您可以看到 contrib.admin 使用名为 urlify.js 的脚本来执行动态 slugging,用法如下:

    <script type="text/javascript" src="/admin-media/js/urlify.js"></script>
    <script type="text/javascript">
    document.getElementById("id_title").onkeyup = function() {
        var e = document.getElementById("id_slug");
        if (!e._changed) { e.value = URLify(document.getElementById("id_title").value, 50); }
    }
    </script>
    

    ...当然取决于您的管理媒体的来源(我的来自“/admin-media/”)

    或者,如果您愿意在视图中进行 slugifying,您可以使用 django.template 中使用的函数作为 slugify 过滤器:django.template.defaultfilters.slugify

    【讨论】:

    • 更新: * 管理员 javascript 的路径是 /static/admin/js/urlify.js 或在带有静态模板标签 {% static 'admin/js/urlify.js' %} 的模板中 * URLify(s, num_chars, allowUnicode) 现在允许使用 Unicode,所以你需要将true/false 添加到 URLify 函数调用中。
    • 另外,还需要包含一个额外的脚本/static/admin/js/vendor/xregexp/xregexp.min.js
    【解决方案2】:
    <script type="text/javascript" src="/media/js/urlify.js"></script>
    

     

    var slug = document.getElementById("id_slug").value;
    
    document.getElementById("id_name").onkeyup = function() {
        if (slug == '') {
            document.getElementById("id_slug").value = URLify(document.getElementById("id_name").value, 50);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-01-11
      • 2017-03-17
      • 2011-08-09
      • 2016-06-17
      • 2012-05-12
      • 2019-08-14
      • 2016-12-22
      • 2012-02-23
      • 2010-12-25
      相关资源
      最近更新 更多