模型表单中的 Django auto slug
Django auto slug in Model Forms
您好,我正在尝试通过 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 "name" .在管理员中就是这样。
上网查了一下,发现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。
您好,我正在尝试通过 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 "name" .在管理员中就是这样。
上网查了一下,发现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。