gpt4 book ai didi

python - 页面未在django中保存表单数据

转载 作者:行者123 更新时间:2023-12-01 04:57:23 24 4
gpt4 key购买 nike

我正在尝试使用 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('_', '')

然后我创建了模板:

Rango

<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'),

一切都是可见的,我能够填写表格。但是,当我通过单击按钮确认数据时,页面返回主页而不是在类别中,并且新页面不会保存在数据库中。请问有人哪里有错误吗?

最佳答案

您的<form>元素的操作设置为 action="/" 。这使得表单提交向主页而不是当前页面发送 POST 请求。您可以通过将表单操作设置为空来纠正此问题 action=""提交到当前 URL 或明确并使用 {% url %}所需表单操作的模板标记。

关于python - 页面未在django中保存表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27079152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com