app.models.py:
from django.core.validators import URLValidator
from django.db import models
class Snapshot(models.Model):
url = models.CharField(max_length=1999, validators=[URLValidator])
app.forms.py:
from django import forms
from .models import Snapshot
class SnapshotForm(forms.ModelForm):
class Meta:
model = Snapshot
fields = ('url',)
app.views.py:
from django.http import HttpResponse
from .forms import SnapshotForm
def index(request):
snapshot_form = SnapshotForm(data={'url': 'not an URL!'})
if snapshot_form.is_valid():
snapshot_form.save()
return HttpResponse("")
為什么它保存“不是 URL!” 進入資料庫,盡管它不是一個有效的 URL?!
合并URLValidator的正確方法是什么?
uj5u.com熱心網友回復:
您已經為您的欄位指定了驗證器,如下所示validators=[URLValidator]:這是不正確的,因為validators引數包含執行驗證的可呼叫串列。在這種情況下,即使URLValidator是可呼叫的,但這實際上是__init__被呼叫的類的方法。您需要傳遞該類的一個實體才能使其正常作業:
# Note the brackets after URLValidator to instantiate the class
url = models.CharField(max_length=1999, validators=[URLValidator()])
更好的是,因為您想輸入一個 URL,您應該簡單地為您的欄位使用URLField該類:
url = models.URLField(max_length=1999)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/510617.html
