1
我想用django做探戈中的練習7,我必須通過向表單添加信息來將新頁面保存到特定類別。頁面不保存django中的表單數據
所以我寫新代碼的forms.py
class PageForm(forms.ModelForm):
title = forms.CharField(max_length=128, help_text="Please enter the title of the page.")
url = forms.CharField(max_length=200, help_text="Please enter the url of the page.")
views = forms.IntegerField(widget=forms.HiddenInput(), initial=0)
class Meta:
model = Page
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
fields = ('title', 'url', 'views')
def save_form(self):
if self.is_valid():
page = self.save(commit=False)
try:
cat = Category.objects.get(name=category_name)
page.category = cat
except:
return render_to_response('rango/add_category.html', {}, context)
page.views = 0
page.save()
return True
else:
return False
然後我編輯views.py
def add_page(request, category_name_url):
context = RequestContext(request)
category_name = decode_url(category_name_url)
if request.method == 'POST':
form = PageForm(request.POST)
if form.save_form():
return category(request, category_name_url)
else:
print form.errors
else:
form = PageForm()
return render_to_response('rango/add_page.html',
{'category_name_url': category_name_url,
'category_name': category_name,
'form': form},
context)
def decode_url(element):
return element.replace(' ', '_')
def encode_url(element):
return element.replace('_', '')
然後我創建的模板:
蘭戈
<body> <h1>Add page to category</h1> <form id="page_form" method="post" action="/"> {% csrf_token %} {% for hidden in forms.hidden_fields %} {{ hidden }} {% endfor %} {% for field in form.visible_fields %} {{ field.errors }} {{ field.help_text }} {{ field }} {% endfor %} <input type="submit" name="Submit" value="Add a page" /> </form> </body> </html>
我在category.html
<a href="/rango/category/{{ category_name_url }}/add_page/">Add page to this category</a>
,當然是一個編輯urls.py提到了新的一頁
> url(r'^rango/category/(?P<category_name_url>\w+)/add_page/$',
> views.add_page, name='add_page'),
一切都是可見的,我能夠填寫表格。但是當我點擊按鈕確認數據時,頁面返回到主頁而不是在類別中,並且新頁面不保存在數據庫中。所以請某人,哪裏有錯誤?
謝謝馬克的回覆。我嘗試了你的建議,現在提交數據後,我留在add_page頁面,但沒有必要保存:-(所以我必須有更多的錯誤代碼:-( – 2014-11-22 17:20:26