На самом деле вы можете использовать <form action="">
, поскольку URL-адрес, на который вы хотите опубликовать, совпадает со страницей, на которой вы находитесь.
Если вам это не нравится, тогда, пока у вас есть 'django.core.context_processors.request' в вашем TEMPLATE_CONTEXT_PROCESSORS в settings.py, я думаю, вы также можете сделать:
<form action="{{ request.path }}">
Как всегда, см. Документы:)
http://docs.djangoproject.com/en/1.1/ref/request-response/#django.http.HttpRequest.path
EDIT
В случае, если за прошедший год с момента опубликования этого вопроса постер все еще не пытался прочитать документы ModelForm ... http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/
Да, представление неверное, вы создали экземпляр формы. Вы также хотите некоторую логику для обработки данных поста. Если это вид редактирования, вы, вероятно, также хотите, чтобы он взял идентификатор элемента в аргументах вида и имел некоторую логику для загрузки этого экземпляра модели.
например:
@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)
)
тогда в вашем urls.py что-то вроде:
(r'^yazi/ekle/(?P<id>\d+)?$', 'tryout.yazi.views.yazi_ekle'),
и в шаблоне:
<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>