<p>实际上,您可以使用<code><form action=""></code>,因为您要发布到的url与您所在的页面相同。</p>
<p>如果你不喜欢,那么只要你在settings.py中的模板上下文处理器中有“django.core.context\u processors.request”,我想你也可以这样做:</p>
<pre><code><form action="{{ request.path }}">
</code></pre>
<p>一如既往,请参阅文档:)</p>
<p><a href="http://docs.djangoproject.com/en/1.1/ref/request-response/#django.http.HttpRequest.path" rel="nofollow noreferrer">http://docs.djangoproject.com/en/1.1/ref/request-response/#django.http.HttpRequest.path</a></p>
<h2>编辑</h2>
<p>以防,在这个问题发布后的中间一年,海报仍然没有尝试阅读模型文档。。。<a href="http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/" rel="nofollow noreferrer">http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/</a></p>
<p>是的,视图是错误的,您已经实例化了表单。您还需要一些逻辑来处理post数据。如果它是一个编辑视图,那么您可能还希望该视图在视图参数中获取一个项id,并具有一些逻辑来加载该模型实例。</p>
<p>例如:</p>
<pre><code>@login_required
def yazi_ekle(request, id=None):
form_args = {}
if id is not None:
# edit an existing Yazilar
try:
yazilar = Yazilar.objects.get(pk=id)
except Yazilar.DoesNotExist:
return Http404('Yazilar not found')
form_args['instance'] = yazilar
# else create new Yazilar...
if request.POST:
form_args['data'] = request.POST
yazi_form = YaziForm(**form_args)
if yazi_form.is_valid():
yazilar = yazi_form.save(commit=True)
else:
yazi_form = YaziForm(**form_args)
return render_to_response('yazi/save.html',
{
'yazi_form': yazi_form
},
context_instance=RequestContext(request)
)
</code></pre>
<p>然后在您的url.py中类似于:</p>
<pre><code>(r'^yazi/ekle/(?P<id>\d+)?$', 'tryout.yazi.views.yazi_ekle'),
</code></pre>
<p>在模板中:</p>
<pre><code><form method="post" action="">
{% csrf_token %}<!-- required since Django 1.2 or later -->
<ul>
{{ yazi_form.as_ul }}
</ul>
<input type="submit" value="Submit Form"/>
</form>
</code></pre>