javascript - 模型表单中的 Django 自动 slug

标签 javascript django django-models django-forms slug

你好,我正在尝试通过JS在我的表单中实现自动slug功能,以下是我的代码。

我的模型:

class Sponsor(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=150)

我的表格:

class SponsorForm(ModelForm):

    class Meta:
        model = Sponsor
        fields = ['name', 'slug', 'image', 'phone', 'website', 'address', 'city', 'state', ]
        exclude = ('created_by', )

如您所见,我想向用户显示 slug 字段,并且他可以对其进行编辑,但在编辑之前,我想根据他在“名称”字段中输入的内容自动设置我的 slug。在管理中就是这样。

在网上搜索了一下,发现Django core有这个文件: urlify.js ,厉害了。到目前为止我所做的是:

<script src="{% static "js/urlify.js"%}"></script>
<script type="text/javascript">

$(function() {
    $( "#id_name" ).keyup(function() {
        $("#id_slug").val(URLify($("#id_name").value, 150));
    });
});
</script>

我得到的只是控制台中的这些错误

错误1:

Uncaught SyntaxError: Invalid regular expression: /�|O|U|o|u|a|?|d|e|p|s|t|f|G|T|S|F|i|I|g|A|c|n|r|C|D|E|N|R|l|z|L|Z|k|K/: Nothing to repeat

错误2:

Uncaught TypeError: Cannot read property 'replace' of undefined

任何帮助或想法将不胜感激。

最佳答案

这相当于信任客户端(即允许浏览器提交您无法控制的字段),这绝不是一个好主意。这意味着恶意用户可以绕过您的代码并为您的模型的 slug 传递任何值,这不太可能是理想的行为。

相反,请在服务器上执行此操作:将模型的 save(...) 方法重写为第一个 set the slug根据其名称在您的模型上,然后通过 super 继续正常的保存方法,将执行传递回 Django。

关于javascript - 模型表单中的 Django 自动 slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35784012/

相关文章:

javascript - 当选中同一个 GridView 中的 CheckBox 时,如何启用和禁用 GridView 中的 LinkBut​​ton?

django - 如何在 Django 中使用连接查询?

django - 在数据库中保存 celery 任务(用于重新运行)

Django 错误 : "Unknown column ' categorytree. id' 在 'field list' 中“

python - 在 Django 中使用新的 User 字段获取并保存 QuerySet 的副本

Javascript(下划线),更改 javascript 对象的函数

javascript - 浏览器后退按钮处理

python - 具有多个数据库的 Django 接口(interface)(但不迁移)

python - django自定义属性返回过滤字段

javascript - Node.js,所需文件中出现类型错误 : xxx is not a function,