Я хочу заполнить данные формы с помощью URL-адреса GET. Это подробное представление внутри имеет форму
page1.html
<form action="{% url 'home_app:viajes_all' %}" method="get">{% csrf_token %}
<p>Name: <input type="text" name="FullName" size="40" value={{user.username}} disabled></p>
<p>Number: <input type="number" name="counter" min="1" max="10" default=1></p>
<p>
<input type="submit" value="Submit">
</p>
</form>
, это создает URL-адрес с такими параметрами, как: validate /? Csrfmiddlewaretoken = OUANf34UX4lB68tCKffBEE & counter = 6 и другая страница html генерировать форма:
<div>
<form method="post">{% csrf_token %}
{{ form.as_p }}
<button type="submit">Add</button>
</form>
</div>
Итак, если я хочу сохранить только заполненную форму и y нажмите кнопку «Добавить», и все будет в порядке.
class CreateContact(CreateView):
model=Prueba
template_name='userviaje/registerUV.html'
form_class=ContactForm
success_url = '/'
def form_valid(self, form):
self.object = form.save(commit=False)
self.object.save()
return super(CreateContact, self).form_valid(form)
Но если я хочу, то эта форма automati c заполните params в его URL. Мне нужно добавить этот код в свое представление
def get(self, request):
context ={}
if self.request.method == 'GET':
counter= self.request.GET.get('counter', None)
form = ContactForm( counter=counter, )
return render(request,'userviaje/registerUV.html', {'form':form })
и добавить этот код в форму
def __init__(self, counter, *args, **kwargs):
super(ContactForm,self).__init__(*args,**kwargs)
self.fields['counter'].initial=counter
Таким образом, моя форма автоматически заполняется по URL-адресу, но кнопка «Отправить» не работай. Кто-нибудь знает почему?
Возникает ошибка типа: _init __ () отсутствует 1 обязательный позиционный аргумент: 'counter'
, но только при отправке кнопки.
Так или сохраните, или автозаполните , но только один вариант, почему? или что мне нужно изменить?