【发布时间】:2015-06-01 11:42:59
【问题描述】:
我是 Django 新手,这就是我目前所做的。
我想接收 CharField 数据并将其验证为 URL。我做了以下事情。
models.py
from django.db import models
class Small(models.Model):
url_new = models.CharField(max_length=500, default='abc', unique=True)
def __str__(self):
return self.url_new
views.py
from django.shortcuts import render, HttpResponseRedirect, Http404
from django.core.validators import URLValidator
from django.core.exceptions import ValidationError
from .forms import SmallForm, URLForm
from .models import Small
def home(request):
form = SmallForm(request.POST or None)
if form.is_valid():
url_validate = URLValidator()
url_new = form.cleaned_data['url_new']
try:
url_validate(url_new)
except ValidationError:
raise form.fields['url_new'].error_messages['Invalid URL']
context = {"form": form}
template = "home.html"
return render(request, template, context)
forms.py
from django import forms
from .models import Small
class URLForm(forms.Form):
url_new = forms.CharField()
class SmallForm(forms.ModelForm):
class Meta:
model = Small
fields = ["url_new", ]
所以,我能够验证 html 页面上的表单,但只有当表单为空并且我点击提交按钮时。
但是当我在表单字段中输入非 url 内容后单击提交时,它会将我带到一个新页面并显示error_messages 这是Invalid URL(当调试为真时)。
有什么方法可以验证它并在 html 页面上显示错误消息,而不是显示调试页面?
提前致谢。
【问题讨论】:
标签: html django python-3.x django-forms