Я просматриваю учебники Tango With Django, я наткнулся на функцию в главе форм ( http://www.tangowithdjango.com/book/chapters/forms.html ), что я не могу приступить к работе.
По общему признанию, я просматриваю учебник с использованием Python 3.3 и Django 1.6, однако до сих пор я мог перемещаться по учебникам.
Функция clean
forms.py
предназначена для очистки URLField:
class PageForm(forms.ModelForm):
title = forms.CharField(max_length=128, help_text="input page title")
url = forms.URLField(max_length=200, help_text="input page URL")
views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
def clean(self, cleaned_data):
cleaned_data = super(PageForm, self).clean()
url = cleaned_data.get('url')
if url and not url.startswith('http://'):
url = 'http://' + url
cleaned_data['url'] = url
return cleaned_data
class Meta:
model = Page
fields = ('title', 'url', 'views')
Вот выдержка из шаблона add_page.html
:
<form id="page_form" method="POST" action="/rango/category/{{category_name_url}}/add_page/">
{% csrf_token %}
{% for hidden in form.hidden_fields %}
{{ hidden }}
{% endfor %}
{% for field in form.visible_fields %}
<p></p>
{{ field.errors }}
{{ field.help_text }}
{{ field }}
{% endfor %}
<p></p>
<input type="submit" name="submit" value="create page" />
<br>
</form>
В качестве обходного пути я настроил функцию forms.py
url
, чтобы она работала таким образом в соответствии с официальной документацией Django, хотя это не мой предпочтительный метод:
url = forms.URLField(
max_length=200, help_text="input page URL", initial='http://')