我試圖用Django的教程教程和覆蓋乾淨()方法不工作添加'http://'在我的網址。這段代碼有什麼問題?如何正確覆蓋乾淨()方法
forms.py
class PageForm(forms.ModelForm):
...
def clean(self):
cleaned_data = self.cleaned_data
url = cleaned_data.get('url')
if url and not url.startswith('http://'):
url += 'http://'
cleaned_data['url'] = url
return cleaned_data
views.py
def add_page(request, category_name_slug):
try:
cat = Category.objects.get(slug=category_name_slug)
except Category.DoesNotExist:
cat = None
if request.method == 'POST':
form = PageForm(request.POST)
if form.is_valid():
if cat:
page = form.save(commit=False)
page.category = cat
page.views = 0
page.save()
return category(request, category_name_slug)
else:
print(form.errors)
else:
form = PageForm()
context_dict = {'category': cat, 'form': form}
return render(request, 'rango/add_page.html', context_dict)
add_page.html
管理工作正常,但HTML本身不接受這個寫作。
@kaveman>你可以在'clean()'的開頭插入一個斷點並檢查self.cleaned_data'和'self.errors'的內容嗎?我敢打賭,網址不在前者,但錯誤信息已經在後者中。 – spectras