【发布时间】:2014-11-22 15:38:48
【问题描述】:
我正在尝试使用 django 进行探戈练习 7,我必须通过向表单添加信息来将新页面保存到特定类别。
所以我在 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'),
一切都是可见的,我可以填写表格。但是当我通过单击按钮确认数据时,页面返回主页而不是类别,并且新页面未保存在数据库中。所以请某人,哪里有错误?
【问题讨论】: