2016-03-03 137 views
0

嗨,我想通過JS在我的窗體中實現汽車slu function功能,以下是我的代碼。模型形式的Django汽車slu 012

我的模型:

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',) 

正如你所看到的,我想蛞蝓現場展示給用戶,他可以對其進行編輯,但編輯之前我會喜歡根據他在字段「名稱」中輸入的內容自動設置我的slu g。在管理員就是這樣。

在互聯網上搜索,我發現Django核心有這個文件: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

任何幫助或想法將不勝感激。

回答

1

這相當於信任客戶端(即允許瀏覽器提交一個你無法控制的字段),這絕不是一個好主意。這意味着惡意用戶可能會繞過您的代碼併爲您的模型slu pass聲傳遞任何價值,這不太可能是期望的行爲。基於它的名字覆蓋模型的save(...)方法首先set the slug你的模型,然後通過super繼續正常的保存方法傳遞執行回的Django:

相反,這樣做在服務器上。

+0

很好的回答:) – Lara

+0

謝謝!希望它有幫助。 :) – kungphu