Django 1.9 URLField删除必要的http://前缀

时间:2016-09-22 14:34:44

标签: python django django-models django-forms django-urls

我已经看到了很多关于此的问题,但尚未找到答案。

这是我的模特:

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    .
    .
    . 
    website = models.URLField(max_length=100, blank=True, null=True)

和我的forms.py:

class UserProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = ('website')

    def clean_website(self):
        website = self.cleaned_data['website']
        if website and not website.startswith('http://'):
            website = 'http://' + website
            return website

    # def clean(self):
    #     cleaned_data = self.cleaned_data
    #     url = cleaned_data.get('url')
    #
    #     if url and not url.startswith('http://'):
    #         url = 'http://' + url
    #         cleaned_data['url'] = url
    #         return cleaned_data

我试图清理网址,但是django的设置方式我没有机会去清理功能。 enter image description here

如何更改Django以允许用户不能输入http(s)://前缀?

我不想用这种类型的代码初始化它:

url = forms.URLField(max_length=200, help_text="input page URL", initial='http://')

我见过这个帖子:django urlfield http prefix 但不可否认的是,我不知道该把它放在哪里看它是否有效。

1 个答案:

答案 0 :(得分:4)

这个验证不是由Django完成的,而是由您的浏览器本身完成的。您可以将func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { //notifications if #available(iOS 10.0, *) { let center = UNUserNotificationCenter.current() center.delegate = self center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in if error == nil{ UIApplication.shared.registerForRemoteNotifications() } } } else { // Fallback on earlier versions } return true } @available(iOS 10.0, *) func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { } @available(iOS 10.0, *) func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { } 放在周围的$(function () { // Create the chart $('#container').highcharts({ chart: { type: 'pie' }, title: { text: 'Browser market shares. January, 2015 to May, 2015' }, subtitle: { text: 'Click the slices to view versions. Source: netmarketshare.com.' }, plotOptions: { series: { dataLabels: { enabled: true, format: '{point.name}: {point.y:.1f}%' } } }, tooltip: { headerFormat: '<span style="font-size:11px">{series.name}</span><br>', pointFormat: '<span style="color:{point.color}">{point.name}</span>: <b>{point.y:.2f}%</b> of total<br/>' }, series: [{ name: 'Brands', colorByPoint: true, data: [{ name: 'Microsoft Internet Explorer', y: 56.33, drilldown: 'Microsoft Internet Explorer' }, { name: 'Chrome', y: 24.03, drilldown: 'Chrome' }, { name: 'Firefox', y: 10.38, drilldown: 'Firefox' }, { name: 'Safari', y: 4.77, drilldown: 'Safari' }, { name: 'Opera', y: 0.91, drilldown: 'Opera' }, { name: 'Proprietary or Undetectable', y: 0.2, drilldown: null }] }], drilldown: { series: [{ name: 'Microsoft Internet Explorer', id: 'Microsoft Internet Explorer', data: [ ['v11.0', 24.13], ['v8.0', 17.2], ['v9.0', 8.11], ['v10.0', 5.33], ['v6.0', 1.06], ['v7.0', 0.5] ] }, { name: 'Chrome', id: 'Chrome', data: [ ['v40.0', 5], ['v41.0', 4.32], ['v42.0', 3.68], ['v39.0', 2.96], ['v36.0', 2.53], ['v43.0', 1.45], ['v31.0', 1.24], ['v35.0', 0.85], ['v38.0', 0.6], ['v32.0', 0.55], ['v37.0', 0.38], ['v33.0', 0.19], ['v34.0', 0.14], ['v30.0', 0.14] ] }, { name: 'Firefox', id: 'Firefox', data: [ ['v35', 2.76], ['v36', 2.32], ['v37', 2.31], ['v34', 1.27], ['v38', 1.02], ['v31', 0.33], ['v33', 0.22], ['v32', 0.15] ] }, { name: 'Safari', id: 'Safari', data: [ ['v8.0', 2.56], ['v7.1', 0.77], ['v5.1', 0.42], ['v5.0', 0.3], ['v6.1', 0.29], ['v7.0', 0.26], ['v6.2', 0.17] ] }, { name: 'Opera', id: 'Opera', data: [ ['v12.x', 0.34], ['v28', 0.24], ['v27', 0.17], ['v29', 0.16] ] }] } }); });元素中来禁用它。