Как передать параметры, полученные из формы, в качестве аргументов функции в django - PullRequest
1 голос
/ 27 февраля 2012

Я только начал изучать джанго. Я создал форму из моделей Django. При нажатии кнопки отправки данные сохраняются в базе данных. Теперь я хочу что-то похожее на приведенное ниже:

#view.py
def contact(request):
  if request.method == 'POST':
  form = UserForm(request.POST)
  if form.is_valid():
            user = form.save()
            return HttpResponseRedirect("/contact/create_db")

#urls.py
(r'^contact/$', views.contact),
(r'^contact/create_db$', views.do_create),

Теперь, когда я определяю функцию do_create в views.py, я хочу передать аргументы (пользовательские данные в пользовательской форме) следующим образом:

def do_create(request, password, dbname, admin_password, confirm_password, demo_data=False, language=None, **kw):

Возможно ли это с помощью django. Как это может быть достигнуто.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Все, что вы спрашиваете здесь, это как получить значение сохраненного user в последующем представлении.

Ну, это легко. Как только пользователь сохранен, он (как и любой экземпляр модели) получает значение pk. Вы можете использовать это в URL для последующего просмотра.

url(r'^contact/create_db/(?P<user_id>\d+)/$', views.do_create, 'do_create'),

В contact:

from django.shortcuts import redirect

...

user = form.save()
return redirect('do_create', kwargs={'user_id': user.pk})

А в do_create:

def do_create(request, user_id):
    user = User.objects.get(pk=user_id)

Обратите внимание на способ, которым я передал имя и аргументы URL-адреса в redirect, а не на жесткое кодирование URL-адреса.

1 голос
/ 27 февраля 2012

Вам не нужно передавать их в поле зрения. Вы хотите передать их в форму. И вы уже делаете это:

form = UserForm(request.POST)

Вы передаете данные POST в форму. Если вы хотите что-то сделать с этими данными, используйте словарь form.cleaned_data после проверки формы. Чтение документов также является хорошей идеей.

...